summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/README15
-rw-r--r--doc/README.Reference15
-rw-r--r--doc/ms-chap.txt1139
-rw-r--r--doc/pptp-draft.txt3472
-rw-r--r--doc/rfc1172.txt2312
-rw-r--r--doc/rfc1332.txt787
-rw-r--r--doc/rfc1334.txt899
-rw-r--r--doc/rfc1548.txt2971
-rw-r--r--doc/rfc1570.txt1057
-rw-r--r--doc/rfc1661.txt2976
-rw-r--r--doc/rfc1662.txt1436
-rw-r--r--doc/rfc1701.txt451
-rw-r--r--doc/rfc1702.txt227
-rw-r--r--doc/rfc1877.txt339
-rw-r--r--doc/rfc1962.txt507
-rw-r--r--doc/rfc1979.txt563
-rw-r--r--doc/rfc1990.txt1347
-rw-r--r--doc/rfc1994.txt732
-rw-r--r--doc/rfc2138.txt3643
-rw-r--r--doc/rfc2139.txt1403
-rw-r--r--doc/rfc2284.txt843
-rw-r--r--doc/rfc2433.txt1123
-rw-r--r--doc/rfc2548.txt2299
-rw-r--r--doc/rfc2637.txt3195
-rw-r--r--doc/rfc2716.txt1347
-rw-r--r--doc/rfc2759.txt1123
-rw-r--r--doc/rfc2865.txt4259
-rw-r--r--doc/rfc2866.txt1571
-rw-r--r--doc/rfc2869.txt2635
-rw-r--r--doc/rfc3078.txt675
-rw-r--r--doc/rfc3079.txt1179
-rw-r--r--doc/rfc3544.txt787
-rw-r--r--doc/rfc3576.txt1683
-rw-r--r--doc/rfc3580.txt1683
-rw-r--r--doc/rfc791.txt2887
-rw-r--r--doc/rfc793.txt5247
36 files changed, 0 insertions, 58827 deletions
diff --git a/doc/README b/doc/README
deleted file mode 100644
index a76719b..0000000
--- a/doc/README
+++ /dev/null
@@ -1,15 +0,0 @@
-In this directory are the various standards documents implemented in
-the pptp package.
-
-rfc791.txt Internet Protocol (IP).
-rfc793.txt Transmission Control Protocol (TCP).
-rfc1661.txt The Point-to-Point Protocol (PPP).
-rfc1662.txt PPP in HDLC-like Framing. (serial encoding).
-rfc1701.txt Generic Routing Encapsulation (GRE).
-rfc1702.txt Generic Routing Encapsulation over IPv4 networks.
-rfc1990.txt The PPP Multilink Protocol (MP).
-ms-chap.txt Microsoft PPP CHAP extensions.
-pptp-draft.txt July 1997 draft of the PPTP standard.
-
-rfc1990 is currently unimplemented in pptp
- CSA, 12/12/97
diff --git a/doc/README.Reference b/doc/README.Reference
deleted file mode 100644
index a76719b..0000000
--- a/doc/README.Reference
+++ /dev/null
@@ -1,15 +0,0 @@
-In this directory are the various standards documents implemented in
-the pptp package.
-
-rfc791.txt Internet Protocol (IP).
-rfc793.txt Transmission Control Protocol (TCP).
-rfc1661.txt The Point-to-Point Protocol (PPP).
-rfc1662.txt PPP in HDLC-like Framing. (serial encoding).
-rfc1701.txt Generic Routing Encapsulation (GRE).
-rfc1702.txt Generic Routing Encapsulation over IPv4 networks.
-rfc1990.txt The PPP Multilink Protocol (MP).
-ms-chap.txt Microsoft PPP CHAP extensions.
-pptp-draft.txt July 1997 draft of the PPTP standard.
-
-rfc1990 is currently unimplemented in pptp
- CSA, 12/12/97
diff --git a/doc/ms-chap.txt b/doc/ms-chap.txt
deleted file mode 100644
index f009400..0000000
--- a/doc/ms-chap.txt
+++ /dev/null
@@ -1,1139 +0,0 @@
-
-
-
-
-
-
-Network Working Group S. Cobb
-Informational Memo Microsoft
-Revision 1.3 March 1997
-
-
- Microsoft PPP CHAP Extensions
-
-
-Status of this Memo
-
- This document has no official Internet Engineering Task Force
- status. It is submitted as an example of one vendor's working
- solution to several authentication issues not yet standardized by
- the Point-to-Point Working Group.
-
- The protocol described is implemented in Microsoft Windows NT 3.5
- and 3.51 and in Microsoft Windows95. Differences between the
- platforms are noted in the text. This information, plus that in
- the references, is believed sufficient to implement an
- interoperating peer.
-
- Distribution of this memo is unlimited.
-
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method
- for transporting multi-protocol datagrams over point-to-point
- links. PPP defines an extensible Link Control Protocol and a
- family of Network Control Protocols (NCPs) for establishing and
- configuring different network-layer protocols.
-
- This document describes Microsoft's PPP CHAP dialect (MS-CHAP),
- which extends the user authentication functionality provided on
- Windows networks to remote workstations. MS-CHAP is closely
- derived from the PPP Challenge/Handshake Authentication Protocol
- described in RFC 1334 [2], which the reader should have at hand.
-
-
-History
-
- Rev 1.21: (Sect 6) Fix error in implicit challenge description
- Rev 1.22: (Sect 7) Fix error in sub-field table ordering
- Rev 1.3: (Sect 10) Added hash example section
-
-
-
-
-
-
-
-
-Cobb [Page 1]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
-Table Of Contents
-
- 1. Introduction................................................3
- 2. LCP Configuration...........................................4
- 3. Challenge Packet............................................4
- 4. Response Packet.............................................4
- 5. Success Packet..............................................8
- 6. Failure Packet..............................................8
- 7. Change Password Packet (version 1)..........................9
- 8. Change Password Packet (version 2).........................12
- 9. Negotiation Examples.......................................16
- 10. Hash Example...............................................16
-
- REFERENCES.....................................................18
- CHAIR'S ADDRESS................................................19
- AUTHOR'S ADDRESS...............................................19
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Cobb [Page 2]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
-1. Introduction
-
- Microsoft created MS-CHAP to authenticate remote Windows
- workstations, providing the functionality to which LAN-based users
- are accustomed.
-
- The closest fit available in standard PPP is CHAP which is
- primarily used for mutual secure authentication between WAN-aware
- routers. Unfortunately, CHAP is not widely used in support of
- remote workstations where providers commonly require an insecure
- text login session in place of PPP authentication protocols. To
- date, several remote workstation issues have not been adequately
- addressed in CHAP. MS-CHAP addresses these issues and also
- integrates the encryption and hashing algorithms used on Windows
- networks.
-
- Where possible, MS-CHAP is consistent with standard CHAP, and the
- differences are easily modularized. Microsoft implements MS-CHAP
- as extensions to it's standard CHAP code base. Briefly,
- differences between MS-CHAP and standard CHAP are:
-
- * MS-CHAP is enabled by negotiating CHAP Algorithm 0x80 in LCP
- option 3, Authentication Protocol.
-
- * The MS-CHAP Response packet is in a format designed for
- compatibility with Microsoft Windows NT 3.5 and 3.51,
- Microsoft Windows95, and Microsoft LAN Manager 2.x networking
- products. The MS-CHAP format does not require the
- authenticator to store a clear or reversibly encrypted
- password.
-
- * MS-CHAP provides an authenticator controlled authentication
- retry mechanism.
-
- * MS-CHAP provides an authenticator controlled change password
- mechanism.
-
- * MS-CHAP defines a set of reason-for-failure codes returned in
- the Failure packet Message field.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Cobb [Page 3]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
-2. LCP Configuration
-
- The LCP configuration for MS-CHAP is identical to that for
- standard CHAP, except that the Algorithm field has value 0x80,
- rather than the MD5 value 0x05. Non-MS-CHAP-aware implementations
- that correctly implement LCP Config-Rej have no problem dealing
- with this non-standard option.
-
- Microsoft currently negotiates authentication only on the
- server->workstation configuration. Mutual authentication may be
- supported in the future.
-
-
-3. Challenge Packet
-
- The MS-CHAP Challenge packet is identical in format to the
- standard CHAP Challenge packet.
-
- MS-CHAP authenticators send an 8-octet challenge Value field. It
- is not necessary for peers to duplicate Microsoft's algorithm for
- selecting the 8-octet value, but the CHAP guidelines on randomness
- should be observed.
-
- Microsoft authenticators do not currently provide information in
- the Name field. This may change in the future.
-
-
-4. Response Packet
-
- The MS-CHAP Response packet is identical in format to the standard
- CHAP Response packet. However, the Value field is sub-formatted
- differently as follows:
-
- 24 octets: LAN Manager compatible challenge response
- 24 octets: Windows NT compatible challenge response
- 1 octet : "Use Windows NT compatible challenge response" flag
-
- The LAN Manager compatible challenge response is an encoded
- function of the password and the received challenge as output by
- the pseudo-code routine LmChallengeResponse below. LAN Manager
- passwords are limited to 14 case-insensitive OEM characters.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Cobb [Page 4]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- LmChallengeResponse(
- IN 8-octet Challenge,
- IN 0-to-14-oem-char Password,
- OUT 24-octet Response )
- {
- LmPasswordHash(
- Password,
- giving PasswordHash )
-
- ChallengeResponse(
- Challenge,
- PasswordHash,
- giving Response )
- }
-
- LmPasswordHash(
- IN 0-to-14-oem-char Password,
- OUT 16-octet PasswordHash )
- {
- Set UcasePassword to the uppercased Password
- Zero pad UcasePassword to 14 characters
-
- DesHash(
- 1st 7-octets of UcasePassword,
- giving 1st 8-octets of PasswordHash )
-
- DesHash(
- 2nd 7-octets of UcasePassword,
- giving 2nd 8-octets of PasswordHash )
- }
-
- DesHash(
- IN 7-octet Clear,
- OUT 8-octet Cypher )
- {
- Make Cypher an irreversibly encrypted form of Clear by
- encrypting known text [6] using Clear as the secret key,
- that is...
-
- DesEncrypt(
- StdText,
- Clear,
- giving Cypher )
- }
-
-
-
-
-
-
-
-
-
-
-
-Cobb [Page 5]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- DesEncrypt(
- IN 8-octet Clear,
- IN 7-octet Key,
- OUT 8-octet Cypher )
- {
- Use the DES encryption algorithm [3] to encrypt Clear into
- Cypher such that Cypher can only be decrypted back to
- Clear by providing Key. Note that the DES algorithm takes
- as input a 64-bit stream where the 8th, 16th, 24th, etc
- bits are parity bits ignored by the encrypting algorithm.
- Unless you write your own DES to accept 56-bit input
- without parity, you will need to insert the parity bits
- yourself.
- }
-
- ChallengeResponse(
- IN 8-octet Challenge,
- IN 16-octet PasswordHash,
- OUT 24-octet Response )
- {
- Set ZPasswordHash to PasswordHash zero padded to 21 octets
-
- DesEncrypt(
- Challenge,
- 1st 7-octets of ZPasswordHash,
- giving 1st 8-octets of Response )
-
- DesEncrypt(
- Challenge,
- 2nd 7-octets of ZPasswordHash,
- giving 2nd 8-octets of Response )
-
- DesEncrypt(
- Challenge,
- 3rd 7-octets of ZPasswordHash,
- giving 3rd 8-octets of Response )
- }
-
-
- The Windows NT compatible challenge response is an encoded
- function of the password and the received challenge as output by
- the NtChallengeResponse routine below. The Windows NT password is
- a string of 0 to (theoretically) 256 case-sensitive Unicode
- characters. Current versions of Windows NT limit passwords to 14
- characters, mainly for compatibility reasons, though this may
- change in the future.
-
-
-
-
-
-
-
-
-
-Cobb [Page 6]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- NtChallengeResponse(
- IN 8-octet Challenge,
- IN 0-to-256-unicode-char Password,
- OUT 24-octet Response )
- {
- NtPasswordHash(
- Password,
- giving PasswordHash )
-
- ChallengeResponse(
- Challenge,
- PasswordHash,
- giving Response )
- }
-
- NtPasswordHash(
- IN 0-to-256-unicode-char Password,
- OUT 16-octet PasswordHash )
- {
- Use the MD4 algorithm [4] to irreversibly hash Password
- into PasswordHash. Only the password is hashed without
- including any terminating 0.
- }
-
- The "use Windows NT compatible challenge response" flag, if 1,
- indicates that the Windows NT response is provided and should be
- used in preference to the LAN Manager response. The LAN Manager
- response will still be used if the account does not have a Windows
- NT password hash, e.g. if the password has not been changed since
- the account was uploaded from a LAN Manager 2.x account database.
- The LAN Manager response need not be provided (set to 0's) if the
- implementation expects all user accounts to be stored only in
- fresh Windows NT account databases or ones where all uploaded
- passwords have been changed. However, doing so may sacrifice
- downward compatibility with non-Windows-NT servers.
-
- If the flag is 0, the Windows NT response is ignored and the LAN
- Manager response is used. If the password is LAN Manager
- compatible, interoperability may be achieved without providing the
- Windows NT challenge response (set to 0's), and providing only the
- LAN Manager response. This is what Microsoft Windows95 does,
- though this may change in the future. Doing so may sacrifice
- interoperability with OEM-specific versions of Windows NT designed
- for maximum security in Windows-NT-only networks.
-
- Implementors seeking the broadest possible interoperability are
- advised to supply both responses when the password is LAN Manager
- compatible. This is what Microsoft Windows NT does.
-
-
-
-
-
-
-
-Cobb [Page 7]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- The Name field identifies the authenticatee's user account name.
- The Windows NT domain name may prefix the user's account name in
- the typical Windows NT format, e.g. "redmond\stevec" where
- "redmond" is a Windows NT domain containing the user account
- "stevec". If a domain is not provided, the backslash should also
- be omitted, e.g. "stevec".
-
-
-5. Success Packet
-
- The Success packet is identical in format to the standard CHAP
- Success packet.
-
-
-6. Failure Packet
-
- The Failure packet is identical in format to the standard CHAP
- Failure packet. There is, however, formatted text stored in the
- Message field which, contrary to the standard CHAP rules, does
- affect the protocol. The Message field format is:
-
- "E=eeeeeeeeee R=r C=cccccccccccccccc V=vvvvvvvvvv"
-
- where
-
- The "eeeeeeeeee" is the decimal error code (need not be 10
- digits) corresponding to one of those listed below, though
- implementations should deal with codes not on this list
- gracefully.
-
- 646 ERROR_RESTRICTED_LOGON_HOURS
- 647 ERROR_ACCT_DISABLED
- 648 ERROR_PASSWD_EXPIRED
- 649 ERROR_NO_DIALIN_PERMISSION
- 691 ERROR_AUTHENTICATION_FAILURE
- 709 ERROR_CHANGING_PASSWORD
-
- The "r" is a flag set to "1" if a retry is allowed, and "0" if
- not. When authenticator sets this flag to "1" it disables
- short timeouts, expecting the authenticatee to prompt the user
- for new credentials and resubmit the response.
-
- The "cccccccccccccccc" is 16 hex digits representing an ASCII
- representation of a new challenge value. This field is
- optional. If it is not sent, authenticator expects the
- resubmitted response to be calculated based on the previous
- challenge value plus decimal 23 in the first octet, i.e. the
- one immediately following the Value Size field. Windows95
- authenticators may send this field. Windows NT authenticators
- do not, but may in the future. Both systems implement
- authenticatee support of this field.
-
-
-
-
-Cobb [Page 8]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- The "vvvvvvvvvv" is the decimal version code (need not be 10
- digits) indicating the MS-CHAP protocol version supported on
- the server. Currently, this is interesting only in selecting
- a Change Password packet type. If the field is not present
- the version should be assumed 1.
-
- Implementations should accept but ignore additional text they do
- not recognize.
-
-
-7. Change Password Packet (version 1)
-
- The version 1 Change Password packet does not appear in standard
- CHAP. It allows the authenticatee to change the password on the
- account specified in the previous Response packet. The version 1
- Change Password packet should be sent only if the authenticator
- reports ERROR_PASSWD_EXPIRED (E=648) in the Message field of the
- Failure packet.
-
- This packet type is supported by Windows NT 3.5 and 3.51. It is
- not supported by Windows95, though this may change in the future.
- See also Change Password Packet (version 2).
-
- The format of this packet is as follows:
-
- 1 octet : Code (=5)
- 1 octet : Identifier
- 2 octets: Length (=72)
- 16 octets: Encrypted LAN Manager Old password Hash
- 16 octets: Encrypted LAN Manager New Password Hash
- 16 octets: Encrypted Windows NT Old Password Hash
- 16 octets: Encrypted Windows NT New Password Hash
- 2 octets: Password Length
- 2 octets: Flags
-
-
- Code
-
- 5
-
-
- Identifier
-
- The Identifier field is one octet and aids in matching
- requests and replies. The value is the Identifier of the
- received Failure packet to which this packet responds plus 1.
-
-
- Length
-
- 72
-
-
-
-
-Cobb [Page 9]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- Encrypted LAN Manager New Password Hash
- Encrypted LAN Manager Old Password Hash
-
- These fields contain the LAN Manager password hash of the new
- and old passwords encrypted with an 8-octet key value [6], as
- output by the pseudo-code routine LmEncryptedPasswordHash
- below.
-
- LmEncryptedPasswordHash(
- IN 0-to-14-oem-char Password,
- IN 8-octet KeyValue,
- OUT 16-octet Cypher )
- {
- LmPasswordHash(
- Password,
- giving PasswordHash )
-
- PasswordHashEncryptedWithBlock(
- PasswordHash,
- KeyValue,
- giving Cypher )
- }
-
- PasswordHashEncryptedWithBlock(
- IN 16-octet PasswordHash,
- IN 7-octet Block,
- OUT 16-octet Cypher )
- {
- DesEncrypt(
- 1st 8-octets PasswordHash,
- 1st 7-octets Block,
- giving 1st 8-octets Cypher )
-
- DesEncrypt(
- 2nd 8-octets PasswordHash,
- 1st 7-octets Block,
- giving 2nd 8-octets Cypher )
- }
-
-
- Encrypted Windows NT New Password Hash
- Encrypted Windows NT Old Password Hash
-
- These fields contain the Windows NT password hash of the new
- and old passwords encrypted with an 8-octet key value [6], as
- output by the pseudo-code routine NtEncryptedPasswordHash
- below.
-
-
-
-
-
-
-
-
-Cobb [Page 10]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- NtEncryptedPasswordHash(
- IN 0-to-14-oem-char Password
- IN 8-octet Challenge
- OUT 16-octet Cypher )
- {
- NtPasswordHash(
- Password,
- giving PasswordHash )
-
- PasswordHashEncryptedWithBlock(
- PasswordHash,
- Challenge,
- giving Cypher )
- }
-
-
- Password Length
-
- The length in octets of the LAN Manager compatible form of the
- new password. If this value is less than or equal to 14 it is
- assumed that the encrypted LAN Manager password hash fields
- are valid. Otherwise, it is assumed these fields are not
- valid, in which case the Windows NT compatible passwords must
- be provided.
-
-
- Flags
-
- Bit field of option flags where 0 is the least significant bit
- of the 16-bit quantity:
-
- 0 : Set 1 indicates that the encrypted Windows NT
- hashed passwords are valid and should be used. If
- 0, the Windows NT fields are not used and the LAN
- Manager fields must be provided.
-
- For the broadest possible interoperability,
- implementations are encouraged to provide both the
- Windows NT and LAN Manager fields when the password
- is LAN Manager compatible. This is what Windows NT
- does.
-
- 1-15 : Reserved, always set 0.
-
-
-
-
-
-
-
-
-
-
-
-
-Cobb [Page 11]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
-8. Change Password Packet (version 2)
-
- The version 2 Change Password packet does not appear in standard
- CHAP. It allows the authenticatee to change the password on the
- account specified in the previous Response packet. The version 2
- Change Password packet should be sent only if the authenticator
- reports ERROR_PASSWD_EXPIRED (E=648) and a version of 2 or more in
- the Message field of the Failure packet.
-
- This packet type is supported by Windows NT 3.51. It is not
- supported by Windows NT 3.5 or Windows95, though the latter may
- change in the future. The version 2 change password packet type
- is preferable to the version 1 type and should be offered and
- accepted where possible.
-
- The format of this packet is as follows:
-
- 1 octet : Code (=6)
- 1 octet : Identifier
- 2 octet : Length (=1070)
- 516 octets : Password Encrypted with Old NT Hash
- 16 octets : Old NT Hash Encrypted with New NT Hash
- 516 octets : Password Encrypted with Old LM Hash
- 16 octets : Old LM Hash Encrypted With New NT Hash
- 24 octets : LAN Manager compatible challenge response
- 24 octets : Windows NT compatible challenge response
- 2-octet : Flags
-
-
- Code
-
- 6
-
-
- Identifier
-
- The Identifier field is one octet and aids in matching
- requests and replies. The value is the Identifier of the
- received Failure packet to which this packet responds plus 1.
-
-
- Length
-
- 1118
-
-
- Password Encrypted with Old NT Hash
-
- This field contains the PWBLOCK form of the new Windows NT
- password encrypted with the old Windows NT password hash, as
- output by the NewPasswordEncryptedWithOldNtPasswordHash
- routine below:
-
-
-
-Cobb [Page 12]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- datatype-PWBLOCK
- {
- 256-unicode-char Password
- 4-octets PasswordLength
- }
-
- NewPasswordEncryptedWithOldNtPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT datatype-PWBLOCK EncryptedPwBlock )
- {
- NtPasswordHash(
- OldPassword,
- giving PasswordHash )
-
- EncryptPwBlockWithPasswordHash(
- NewPassword,
- PasswordHash,
- giving EncryptedPwBlock )
- }
-
- EncryptPwBlockWithPasswordHash(
- IN 0-to-256-unicode-char Password,
- IN 16-octet PasswordHash,
- OUT datatype-PWBLOCK PwBlock )
- {
- Fill ClearPwBlock with random octet values
- lstrcpyW( to ClearPwBlock.Password, from Password )
- ClearPwBlock.PasswordLength = lstrlenW( Password )
-
- Rc4Encrypt(
- ClearPwBlock,
- sizeof( ClearPwBlock ),
- PasswordHash,
- sizeof( PasswordHash ),
- giving PwBlock )
- }
-
- Rc4Encrypt(
- IN x-octet Clear,
- IN integer ClearLength,
- IN y-octet Key,
- IN integer KeyLength,
- OUT x-octet Cypher )
- {
- Use the RC4 encryption algorithm [5] to encrypt Clear of
- length ClearLength octets into a Cypher of the same length
- such that the Cypher can only be decrypted back to Clear
- by providing a Key of length KeyLength octets.
- }
-
-
-
-
-
-Cobb [Page 13]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- Old NT Hash Encrypted with New NT Hash
-
- This field contains the old Windows NT password hash encrypted
- with the new Windows NT password hash, as output by the
- OldNtPasswordHashEncryptedWithNewNtPasswordHash routine below:
-
- OldNtPasswordHashEncryptedWithNewNtPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT 16-octet EncryptedPasswordHash )
- {
- NtPasswordHash(
- OldPassword,
- giving OldPasswordHash )
-
- NtPasswordHash(
- NewPassword,
- giving NewPasswordHash )
-
- PasswordHashEncryptedWithBlock(
- OldPasswordHash,
- NewPasswordHash,
- giving EncrytptedPasswordHash )
- }
-
-
- Password Encrypted with Old LM Hash
-
- This field contains the PWBLOCK form of the new Windows NT
- password encrypted with the old LAN Manager password hash, as
- output by the NewPasswordEncryptedWithOldLmPasswordHash
- routine below:
-
- NewPasswordEncryptedWithOldLmPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT datatype-PWBLOCK EncryptedPwBlock )
- {
- LmPasswordHash(
- OldPassword,
- giving PasswordHash )
-
- EncryptPwBlockWithPasswordHash(
- NewPassword,
- PasswordHash,
- giving EncryptedPwBlock )
- }
-
-
-
-
-
-
-
-
-Cobb [Page 14]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- Old LM Hash Encrypted with New NT Hash
-
- This field contains the old LAN Manager password hash encrypted
- with the new Windows NT password hash, as output by the
- OldLmPasswordHashEncryptedWithNewNtPasswordHash routine below:
-
- OldLmPasswordHashEncryptedWithNewNtPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT 16-octet EncryptedPasswordHash )
- {
- LmPasswordHash(
- OldPassword,
- giving OldPasswordHash )
-
- NtPasswordHash(
- NewPassword,
- giving NewPasswordHash )
-
- PasswordHashEncryptedWithBlock(
- OldPasswordHash,
- NewPasswordHash,
- giving EncrytptedPasswordHash )
- }
-
-
- LAN Manager compatible challenge response
- Windows NT compatible challenge response
-
- The challenge response fields as described in the Response
- packet description, but calculated on the new password and the
- same challenge used in the last response.
-
-
- Flags
-
- Bit field of option flags:
-
- 0 : The "use Windows NT compatible challenge response"
- flag as described in the Response packet.
-
- 1 : Set 1 indicates that the "Password Encrypted with
- Old LM Hash" and "Old LM Hash Encrypted With New NT
- Hash" fields are valid and should be used. Set 0
- indicates these fields are not valid.
-
- For the broadest possible interoperability,
- implementations are encouraged to provide both the
- Windows NT and LAN Manager fields when the password
- is LAN Manager compatible. This is what Windows NT
- does.
-
- 2-15 : Reserved, always set 0.
-
-
-Cobb [Page 15]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
-9. Negotiation Examples
-
- Here are some examples of typical negotiations. The authenticatee
- is on the left and the authenticator is on the right.
-
- The packet sequence ID is incremented on each authentication retry
- Response and on the change password response. All cases where the
- packet sequence ID is updated are noted below.
-
- Response retry is never allowed after either Change Password.
- Change Password may occur after Response retry. The implied
- challenge form is shown in the examples, though all cases of
- "first challenge+23" should be replaced by the
- "C=cccccccccccccccc" challenge if authenticator supplies it in the
- Failure packet.
-
-
- Successful authentication
-
- <- Challenge
- Response ->
- <- Success
-
-
- Failed authentication with no retry allowed
-
- <- Challenge
- Response ->
- <- Failure (E=691 R=0)
-
-
- Successful authentication after retry
-
- <- Challenge
- Response ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to first challenge+23 ->
- <- Success
-
-
- Failed hack attack with 3 attempts allowed
-
- <- Challenge
- Response ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to first challenge+23 ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to first challenge+23+23 ->
- <- Failure (E=691 R=0)
-
-
-
-
-
-
-Cobb [Page 16]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
- Successful authentication with password change
-
- <- Challenge
- Response ->
- <- Failure (E=648 R=0), disable short timeout
- ChangePassword (++ID) to first challenge ->
- <- Success
-
- Successful authentication with retry and password change
-
- <- Challenge
- Response ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to first challenge+23 ->
- <- Failure (E=648 R=0), disable short timeout
- ChangePassword (++ID) to first challenge+23 ->
- <- Success
-
-
-10. Hash Example
-
- Intermediate values for password "MyPw".
-
- 8-octet Challenge:
- 10 2D B5 DF 08 5D 30 41
-
- 0-to-14-oem-char LmPassword:
- 4D 59 50 57
-
- 16-octet LmPasswordHash:
- 75 BA 30 19 8E 6D 19 75 AA D3 B4 35 B5 14 04 EE
-
- 24-octet LmChallengeResponse:
- 91 88 1D 01 52 AB 0C 33 C5 24 13 5E C2 4A 95 EE
- 64 E2 3C DC 2D 33 34 7D
-
- 0-to-256-unicode-char NtPassword:
- 4D 00 79 00 50 00 77 00
-
- 16-octet NtPasswordHash:
- FC 15 6A F7 ED CD 6C 0E DD E3 33 7D 42 7F 4E AC
-
- 24-octet NtChallengeResponse:
- 4E 9D 3C 8F 9C FD 38 5D 5B F4 D3 24 67 91 95 6C
- A4 C3 51 AB 40 9A 3D 61
-
-
-
-
-
-
-
-
-
-
-Cobb [Page 17]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
-REFERENCES
-
- [1] Simpson, W., "The Point-to-Point Protocol (PPP)", RFC 1331,
- Daydreamer, May 1992
-
- [2] LLoyd, B and Simpson, W., "PPP Authentication Protocols",
- RFC 1334, L&A and Daydreamer respectively, Octobet 1992
-
- [3] "Data Encryption Standard (DES)" is Federal Information
- Processing Standard publication 46, National Institute of
- Standard and Techology.
-
- [4] Rivest, R., "MD4 Message Digest Algorithm", RFC 1320, MIT
- Laboratory for Computer Science and RSA Data Security, Inc.,
- April 1992.
-
- [5] RC4 is an encryption standard available from RSA Data Security
- Inc.
-
- [6] The 8-octet StdText string used in the LAN Manager compatible
- password hashing and the 8-octet KeyValue used in the Change
- Password (version 1) packet are not available for public
- distribution at this time. Contact the Microsoft Developer
- Relations group (at time of writing dbeaver@microsoft.com) for
- details on obtaining these values. On this particular point
- the author can't help you.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Cobb [Page 18]
-
-Memo Microsoft PPP CHAP Extensions March 1997
-
-
-CHAIR'S ADDRESS
-
- The working group can be contacted via the current chair:
-
- Fred Baker
- Email: fred@cisco.com
-
-
-
-AUTHOR'S ADDRESS
-
- The author is a developer in Microsoft's Windows NT
- Internetworking group, which monitors the ietf-ppp@merit.edu
- discussions. Questions can also be directed as below, where email
- is preferred.
-
- Steve Cobb
- Microsoft Corporation
- One Microsoft Way
- Redmond, WA 98052-6399
-
- Email: stevec@microsoft.com
-
- The author maintains an informal mailing list of persons
- interested in MS-CHAP and other news regarding Windows NT support
- for PPP authentication protocols. Send email if interested.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Cobb [Page 19]
diff --git a/doc/pptp-draft.txt b/doc/pptp-draft.txt
deleted file mode 100644
index f58701b..0000000
--- a/doc/pptp-draft.txt
+++ /dev/null
@@ -1,3472 +0,0 @@
-
-Internet Draft Kory Hamzeh
- Ascend Communications
- Gurdeep Singh Pall
- Microsoft Corporation
- William Verthein
- U.S. Robotics/3Com
- Jeff Taarud
- Copper Mountain Networks
- W. Andrew Little
- ECI Telematics
-July 1997
-Expire in six months
-
-
- Point-to-Point Tunneling Protocol--PPTP
- draft-ietf-pppext-pptp-02.txt
-
-Status of this Memo
-
- This document is an Internet-Draft. Internet-Drafts are working
- documents of the Internet Engineering Task Force (IETF), its areas,
- and its working groups. Note that other groups may also distribute
- working documents as Internet-Drafts.
-
- Internet-Drafts are draft documents valid for a maximum of six months
- and may be updated, replaced, or obsoleted by other documents at any
- time. It is inappropriate to use Internet-Drafts as reference
- material or to cite them other than as "work in progress."
-
- To learn the current status of any Internet-Draft, please check the
- "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
- Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
- munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
- ftp.isi.edu (US West Coast).
-
-Abstract
-
- This document specifies a protocol which allows the Point
- to Point Protocol (PPP) to be tunneled through an IP
- network. PPTP does not specify any changes to the PPP
- protocol but rather describes a new vehicle for carrying
- PPP. A client-server architecture is defined in order to
- decouple functions which exist in current Network Access
- Servers (NAS) and support Virtual Private Networks (VPNs).
- The PPTP Network Server (PNS) is envisioned to run on a
- general purpose operating system while the client, referred
- to as a PPTP Access Concentrator (PAC) operates on a dial
- access platform. PPTP specifies a call-control and
-
-
-
-Hamzeh, et al [Page 1]
-
-Internet Draft PPTP July 1997
-
-
- management protocol which allows the server to control
- access for dial-in circuit switched calls originating from
- a PSTN or ISDN or to initiate outbound circuit-switched
- connections. PPTP uses an enhanced GRE (Generic Routing
- Encapsulation) mechanism to provide a flow- and
- congestion-controlled encapsulated datagram service for
- carrying PPP packets.
-
-1. Introduction
-
- PPTP allows existing Network Access Server (NAS) functions to be
- separated using a client-server architecture. Traditionally, the
- following functions are implemented by a NAS:
-
- 1) Physical native interfacing to PSTN or ISDN and control of
- external modems or terminal adapters.
-
- A NAS may interface directly to a telco analog or digital circuit
- or attach via an external modem or terminal adapter. Control of a
- circuit-switched connection is accomplished with either modem
- control or DSS1 ISDN call control protocols.
-
- The NAS, in conjunction with the modem or terminal adapters, may
- perform rate adaption, analog to digital conversion, sync to async
- conversion or a number of other alterations of data streams.
-
- 2) Logical termination of a Point-to-Point-Protocol (PPP) Link
- Control Protocol (LCP) session.
-
- 3) Participation in PPP authentication protocols [3].
-
- 4) Channel aggregation and bundle management for PPP Multilink
- Protocol.
-
- 5) Logical termination of various PPP network control protocols
- (NCP).
-
- 6) Multiprotocol routing and bridging between NAS interfaces.
-
- PPTP divides these functions between the PAC and PNS. The PAC is
- responsible for functions 1, 2, and possibly 3. The PNS may be
- responsible for function 3 and is responsible for functions 4, 5, and
- 6. The protocol used to carry PPP protocol data units (PDUs) between
- the PAC and PNS, as well as call control and management is addressed
- by PPTP.
-
- The decoupling of NAS functions offers these benefits:
-
-
-
-
-Hamzeh, et al [Page 2]
-
-Internet Draft PPTP July 1997
-
-
- Flexible IP address management. Dial-in users may maintain a
- single IP address as they dial into different PACs as long as they
- are served from a common PNS. If an enterprise network uses
- unregistered addresses, a PNS associated with the enterprise
- assigns addresses meaningful to the private network.
-
- Support of non-IP protocols for dial networks behind IP networks.
- This allows Appletalk and IPX, for example to be tunneled through
- an IP-only provider. The PAC need not be capable of processing
- these protocols.
-
- A solution to the "multilink hunt-group splitting" problem.
- Multilink PPP, typically used to aggregate ISDN B channels,
- requires that all of the channels composing a multilink bundle be
- grouped at a single NAS. Since a multilink PPP bundle can be
- handled by a single PNS, the channels comprising the bundle may be
- spread across multiple PACs.
-
-
-1.1 Protocol Goals and Assumptions
-
- The PPTP protocol is implemented only by the PAC and PNS. No other
- systems need to be aware of PPTP. Dial networks may be connected to a
- PAC without being aware of PPTP. Standard PPP client software should
- continue to operate on tunneled PPP links.
-
- PPTP can also be used to tunnel a PPP session over an IP network. In
- this configuration the PPTP tunnel and the PPP session runs between
- the same two machines with the caller acting as a PNS.
-
- It is envisioned that there will be a many-to-many relationship
- between PACs and PNSs. A PAC may provide service to many PNSs. For
- example, an Internet service provider may choose to support PPTP for
- a number of private network clients and create VPNs for them. Each
- private network may operate one or more PNSs. A single PNS may
- associate with many PACs to concentrate traffic from a large number
- of geographically diverse sites.
-
- PPTP uses an extended version of GRE to carry user PPP packets. These
- enhancements allow for low-level congestion and flow control to be
- provided on the tunnels used to carry user data between PAC and PNS.
- This mechanism allows for efficient use of the bandwidth available
- for the tunnels and avoids unnecessary retransmisions and buffer
- overruns. PPTP does not dictate the particular algorithms to be used
- for this low level control but it does define the parameters that
- must be communicated in order to allow such algorithms to work.
- Suggested algorithms are included in Appendix A.
-
-
-1.2 Terminology
-
-
-Hamzeh, et al [Page 3]
-
-Internet Draft PPTP July 1997
-
-
- Analog Channel
-
- A circuit-switched communication path which is intended to
- carry 3.1 Khz audio in each direction.
-
- Digital Channel
-
- A circuit-switched communication path which is intended to
- carry digital information in each direction.
-
- Call
-
- A connection or attempted connection between two terminal
- endpoints on a PSTN or ISDN--for example, a telephone call
- between two modems.
-
- Control Connection
-
- A control connection is created for each PAC, PNS pair and
- operates over TCP [4]. The control connection governs aspects
- of the tunnel and of sessions assigned to the tunnel.
-
- Dial User
-
- An end-system or router attached to an on-demand PSTN or ISDN
- which is either the initiator or recipient of a call.
-
- Network Access Server (NAS)
-
- A device providing temporary, on-demand network access to
- users. This access is point-to-point using PSTN or ISDN lines.
-
- PPTP Access Concentrator (PAC)
-
- A device attached to one or more PSTN or ISDN lines capable of
- PPP operation and of handling the PPTP protocol. The PAC need
- only implement TCP/IP to pass traffic to one or more PNSs. It
- may also tunnel non-IP protocols.
-
- PPTP Network Server (PNS)
-
- A PNS is envisioned to operate on general-purpose
- computing/server platforms. The PNS handles the server side of
- the PPTP protocol. Since PPTP relies completely on TCP/IP and
- is independent of the interface hardware, the PNS may use any
- combination of IP interface hardware including LAN and WAN
- devices.
-
-
-
-
-Hamzeh, et al [Page 4]
-
-Internet Draft PPTP July 1997
-
-
- Session
-
- PPTP is connection-oriented. The PNS and PAC maintain state for
- each user that is attached to a PAC. A session is created when
- end-to-end PPP connection is attempted between a dial user and
- the PNS. The datagrams related to a session are sent over the
- tunnel between the PAC and PNS.
-
- Tunnel
-
- A tunnel is defined by a PNS-PAC pair. The tunnel protocol is
- defined by a modified version of GRE [1,2]. The tunnel carries
- PPP datagrams between the PAC and the PNS. Many sessions are
- multiplexed on a single tunnel. A control connection operating
- over TCP controls the establishment, release, and maintenance
- of sessions and of the tunnel itself.
-
-1.3 Protocol Overview
-
- There are two parallel components of PPTP: 1) a Control Connection
- between each PAC-PNS pair operating over TCP and 2) an IP tunnel
- operating between the same PAC-PNS pair which is used to transport
- GRE encapsulated PPP packets for user sessions between the pair.
-
-1.3.1 Control Connection Overview
-
- Before PPP tunneling can occur between a PAC and PNS, a control
- connection must be established between them. The control connection
- is a standard TCP session over which PPTP call control and management
- information is passed. The control session is logically associated
- with, but separate from, the sessions being tunneled through a PPTP
- tunnel. For each PAC-PNS pair both a tunnel and a control connection
- exist. The control connection is responsible for establishment,
- management, and release of sessions carried through the tunnel. It is
- the means by which a PNS is notified of an incoming call at an
- associated PAC, as well as the means by which a PAC is instructed to
- place an outgoing dial call.
-
- A control connection can be established by either the PNS or the PAC.
- Following the establishment of the required TCP connection, the PNS
- and PAC establish the control connection using the Start-Control-
- Connection-Request and -Reply messages. These messages are also used
- to exchange information about basic operating capabilities of the PAC
- and PNS. Once the control connection is established, the PAC or PNS
- may initiate sessions by requesting outbound calls or responding to
- inbound requests. The control connection may communicate changes in
- operating characteristics of an individual user session with a Set-
- Link-Info message. Individual sessions may be released by either the
-
-
-
-Hamzeh, et al [Page 5]
-
-Internet Draft PPTP July 1997
-
-
- PAC or PNS, also through Control Connection messages.
-
- The control connection itself is maintained by keep-alive echo
- messages. This ensures that a connectivity failure between the PNS
- and the PAC can be detected in a timely manner. Other failures can be
- reported via the Wan-Error-Notify message, also on the control
- connection.
-
- It is intended that the control connection will also carry management
- related messages in the future, such as a message allowing the PNS to
- request the status of a given PAC; these message types have not yet
- been defined.
-
-1.3.2 Tunnel Protocol Overview
-
- PPTP requires the establishment of a tunnel for each communicating
- PNS-PAC pair. This tunnel is used to carry all user session PPP
- packets for sessions involving a given PNS-PAC pair. A key which is
- present in the GRE header indicates which session a particular PPP
- packet belongs to. In this manner, PPP packets are multiplexed and
- demultiplexed over a single tunnel between a given PNS-PAC pair. The
- value to use in the key field is established by the call
- establishment procedure which takes place on the control connection.
-
- The GRE header also contains acknowledgment and sequencing
- information that is used to perform some level of congestion-control
- and error detection over the tunnel. Again the control connection is
- used to determine rate and buffering parameters that are used to
- regulate the flow of PPP packets for a particular session over the
- tunnel. PPTP does not specify the particular algorithms to use for
- congestion-control and flow-control. Suggested algorithms for the
- determination of adaptive time-outs to recover from dropped data or
- acknowledgments on the tunnel are included in Appendix A of this
- document.
-
-1.4 Specification Language
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized.
-
- MUST This word, or the adjective "required", means
- that the definition is an absolute requirement
- of the specification.
-
- MUST NOT This phrase means that the definition is an
- absolute prohibition of the specification.
-
- SHOULD This word, or the adjective "recommended",
-
-
-
-Hamzeh, et al [Page 6]
-
-Internet Draft PPTP July 1997
-
-
- means that, in some circumstances, valid
- reasons may exist to ignore this item, but the
- full implications must be understood and
- carefully weighed before choosing a different
- course. Unexpected results may result
- otherwise.
-
- MAY This word, or the adjective "optional", means
- that this item is one of an allowed set of
- alternatives. An implementation which does
- not include this option MUST be prepared to
- interoperate with another implementation which
- does include the option.
-
- silently discard The implementation discards the datagram
- without further processing, and without
- indicating an error to the sender. The
- implementation SHOULD provide the capability
- of logging the error, including the contents
- of the discarded datagram, and SHOULD record
- the event in a statistics counter.
-
-
-1.5 Message Format and Protocol Extensibility
-
- PPTP defines a set of messages sent as TCP data on the control
- connection between a PNS and a given PAC. The TCP session for the
- control connection is established by initiating a TCP connection to
- port 1723 [6]. The source port is assigned to any unused port number.
-
- Each PPTP Control Connection message begins with an 8 octet fixed
- header portion. This fixed header contains the following: the total
- length of the message, the PPTP Message Type indicator, and a "Magic
- Cookie".
-
- Two Control Connection message types are indicated by the PPTP
- Message Type field:
-
- 1 - Control Message
- 2 - Management Message
-
- Management messages are currently not defined.
-
- The Magic Cookie is always sent as the constant 0x1A2B3C4D. Its
- basic purpose is to allow the receiver to ensure that it is properly
- synchronized with the TCP data stream. It should not be used as a
- means for resynchronizing the TCP data stream in the event that a
- transmitter issues an improperly formatted message. Loss of
-
-
-
-Hamzeh, et al [Page 7]
-
-Internet Draft PPTP July 1997
-
-
- synchronization must result in immediate closing of the control
- connection's TCP session.
-
- For clarity, all Control Connection message templates in the next
- section include the entire PPTP Control Connection message header.
- Numbers preceded by 0x are hexadecimal values.
-
- The currently defined Control Messages, grouped by function, are:
-
- Control Message Message Code
-
- (Control Connection Management)
-
- Start-Control-Connection-Request 1
- Start-Control-Connection-Reply 2
- Stop-Control-Connection-Request 3
- Stop-Control-Connection-Reply 4
- Echo-Request 5
- Echo-Reply 6
-
- (Call Management)
-
- Outgoing-Call-Request 7
- Outgoing-Call-Reply 8
- Incoming-Call-Request 9
- Incoming-Call-Reply 10
- Incoming-Call-Connected 11
- Call-Clear-Request 12
- Call-Disconnect-Notify 13
-
- (Error Reporting)
-
- WAN-Error-Notify 14
-
- (PPP Session Control)
-
- Set-Link-Info 15
-
-
- The Start-Control-Connection-Request and -Reply messages determine
- which version of the Control Connection protocol will be used. The
- version number field carried in these messages consists of a version
- number in the high octet and a revision number in the low octet.
- Version handling is described in Section 3. The current value of the
- version number field is 0x0100 for version 1, revision 0.
-
- The use of the GRE-like header for the encapsulation of PPP user
- packets is specified in Section 4.
-
-
-
-Hamzeh, et al [Page 8]
-
-Internet Draft PPTP July 1997
-
-
- The MTU for the user data packets encapsulated in GRE is 1532 octets,
- not including the IP and GRE headers.
-
-2.0 Control Connection Protocol Specification
-
-
- Control Connection messages are used to establish and clear user
- sessions. The first set of Control Connection messages are used to
- maintain the control connection itself. The control connection is
- initiated by either the PNS or PAC after they establish the
- underlying TCP connection. The procedure and configuration
- information required to determine which TCP connections are
- established is not covered by this protocol.
-
- The following Control Connection messages are all sent as user data
- on the established TCP connection between a given PNS-PAC pair. Note
- that care has been taken to ensure that all word (2 octet) and
- longword (4 octet) values begin on appropriate boundaries. All data
- is sent in network order (high order octets first). Any "reserved"
- fields MUST be sent as 0 values to allow for protocol extensibility.
-
- The TCP header is followed by the PPTP fields shown in the following:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 9]
-
-Internet Draft PPTP July 1997
-
-
-2.1 Start-Control-Connection-Request
-
- The Start-Control-Connection-Request is a PPTP control message used
- to establish the control connection between a PNS and a PAC. Each
- PNS-PAC pair requires a dedicated control connection to be
- established. A control connection must be established before any
- other PPTP messages can be issued. The establishment of the control
- connection can be initiated by either the PNS or PAC. A procedure
- which handles the occurrence of a collision between PNS and PAC
- Start-Control-Connection-Requests is described in Section 3.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Protocol Version | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Capabilities |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Bearer Capabilities |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Maximum Channels | Firmware Revision |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Host Name (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Vendor String (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D. This constant value is used
- as a sanity check on received messages
- (see Section 1.5).
-
-
-
-Hamzeh, et al [Page 10]
-
-Internet Draft PPTP July 1997
-
-
- Control Message Type 1 for Start-Control-Connection-Request.
-
- Reserved0 This field MUST be 0.
-
- Protocol Version The version of the PPTP protocol that the
- sender wishes to use.
-
- Reserved1 This field MUST be 0.
-
- Framing Capabilities A set of bits indicating the type of
- framing that the sender of this message
- can provide. The currently defined bit
- settings are:
-
- 1 - Asynchronous Framing supported
-
- 2 - Synchronous Framing supported
-
- Bearer Capabilities A set of bits indicating the bearer
- capabilities that the sender of this
- message can provide. The currently
- defined bit settings are:
-
- 1 - Analog access supported
-
- 2 - Digital access supported
-
- Maximum Channels The total number of individual PPP
- sessions this PAC can support. In
- Start-Control-Connection-Requests issued
- by the PNS, this value SHOULD be set to
- 0. It MUST be ignored by the PAC.
-
- Firmware Revision This field contains the firmware revision
- number of the issuing PAC, when issued by
- the PAC, or the version of the PNS PPTP
- driver if issued by the PNS.
-
- Host Name A 64 octet field containing the DNS name
- of the issuing PAC or PNS. If less than
- 64 octets in length, the remainder of
- this field SHOULD be filled with octets
- of value 0.
-
- Vendor Name A 64 octet field containing a vendor
- specific string describing the type of
- PAC being used, or the type of PNS
- software being used if this request is
-
-
-
-Hamzeh, et al [Page 11]
-
-Internet Draft PPTP July 1997
-
-
- issued by the PNS. If less than 64
- octets in length, the remainder of this
- field SHOULD be filled with octets of
- value 0.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 12]
-
-Internet Draft PPTP July 1997
-
-
-2.2 Start-Control-Connection-Reply
-
- The Start-Control-Connection-Reply is a PPTP control message sent in
- reply to a received Start-Control-Connection-Request message. This
- message contains a result code indicating the result of the control
- connection establishment attempt.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Protocol Version | Result Code | Error Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Capability |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Bearer Capability |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Maximum Channels | Firmware Revision |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Host Name (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Vendor String (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 2 for Start-Control-Connection-Reply.
-
- Reserved0 This field MUST be 0.
-
- Protocol Version The version of the PPTP protocol that the
-
-
-
-Hamzeh, et al [Page 13]
-
-Internet Draft PPTP July 1997
-
-
- sender wishes to use.
-
- Result Code Indicates the result of the command
- channel establishment attempt. Current
- valid Result Code values are:
-
- 1 - Successful channel establishment
-
- 2 - General error -- Error Code
- indicates the problem
-
- 3 - Command channel already exists;
-
- 4 - Requester is not authorized to
- establish a command channel
-
- 5 - The protocol version of the
- requester is not supported
-
- Error Code This field is set to 0 unless a "General
- Error" exists, in which case Result Code
- is set to 2 and this field is set to the
- value corresponding to the general error
- condition as specified in Section 2.16.
-
- Framing Capabilities A set of bits indicating the type of
- framing that the sender of this message
- can provide. The currently defined bit
- settings are:
-
- 1 - Asynchronous Framing supported
-
- 2 - Synchronous Framing supported.
-
- Bearer Capabilities A set of bits indicating the bearer
- capabilities that the sender of this
- message can provide. The currently
- defined bit settings are:
-
- 1 - Analog access supported
-
- 2 - Digital access supported
-
- Maximum Channels The total number of individual PPP
- sessions this PAC can support. In a
- Start-Control-Connection-Reply issued by
- the PNS, this value SHOULD be set to 0
- and it must be ignored by the PAC. The
-
-
-
-Hamzeh, et al [Page 14]
-
-Internet Draft PPTP July 1997
-
-
- PNS MUST NOT use this value to try to
- track the remaining number of PPP
- sessions that the PAC will allow.
-
- Firmware Revision This field contains the firmware revision
- number of the issuing PAC, or the version
- of the PNS PPTP driver if issued by the
- PNS.
-
- Host Name A 64 octet field containing the DNS name
- of the issuing PAC or PNS. If less than
- 64 octets in length, the remainder of
- this field SHOULD be filled with octets
- of value 0.
-
- Vendor Name A 64 octet field containing a vendor
- specific string describing the type of
- PAC being used, or the type of PNS
- software being used if this request is
- issued by the PNS. If less than 64
- octets in length, the remainder of this
- field SHOULD be filled with octets of
- value 0.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 15]
-
-Internet Draft PPTP July 1997
-
-
-2.3 Stop-Control-Connection-Request
-
- The Stop-Control-Connection-Request is a PPTP control message sent by
- one peer of a PAC-PNS control connection to inform the other peer
- that the control connection should be closed. In addition to closing
- the control connection, all active user calls are implicitly cleared.
- The reason for issuing this request is indicated in the Reason field.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Reason | Reserved1 | Reserved2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 3 for Stop-Control-Connection-Request.
-
- Reserved0 This field MUST be 0.
-
- Reason Indicates the reason for the control
- connection being closed. Current valid
- Reason values are:
-
- 1 (None) - General request to clear
- control connection
-
- 2 (Stop-Protocol) - Can't support
- peer's version of the protocol
-
- 3 (Stop-Local-Shutdown) - Requester is
- being shut down
-
- Reserved1, Reserved2 These fields MUST be 0.
-
-
-
-Hamzeh, et al [Page 16]
-
-Internet Draft PPTP July 1997
-
-
-2.4 Stop-Control-Connection-Reply
-
- The Stop-Control-Connection-Reply is a PPTP control message sent by
- one peer of a PAC-PNS control connection upon receipt of a Stop-
- Control-Connection-Request from the other peer.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 4 for Stop-Control-Connection-Reply.
-
- Reserved0 This field MUST be 0.
-
- Result Code Indicates the result of the attempt to
- close the control connection. Current
- valid Result Code values are:
-
- 1 (OK) - Control connection closed
-
- 2 (General Error) - Control connection
- not closed for reason indicated in
- Error Code
-
- Error Code This field is set to 0 unless a "General
- Error" exists, in which case Result Code
- is set to 2 and this field is set to the
- value corresponding to the general error
- condition as specified in Section 2.16.
-
- Reserved1 This field MUST be 0.
-
-
-
-Hamzeh, et al [Page 17]
-
-Internet Draft PPTP July 1997
-
-
-2.5 Echo-Request
-
- The Echo-Request is a PPTP control message sent by either peer of a
- PAC-PNS control connection. This control message is used as a "keep-
- Alive" for the control connection. The receiving peer issues an
- Echo-Reply to each Echo-Request received. As specified in Section 3,
- if the sender does not receive an Echo Reply in response to an Echo-
- Request, it will eventually clear the control connection.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 5 for Echo-Request.
-
- Reserved0 This field MUST be 0.
-
- Identifier A value set by the sender of the Echo-
- Request that is used to match the reply
- with the corresponding request.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 18]
-
-Internet Draft PPTP July 1997
-
-
-2.6 Echo-Reply
-
- The Echo-Reply is a PPTP control message sent by either peer of a
- PAC-PNS control connection in response to the receipt of an Echo-
- Request.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 6 for Echo-Reply.
-
- Reserved0 This field MUST be 0.
-
- Identifier The contents of the identify field from
- the received Echo-Request is copied to
- this field.
-
- Result Code Indicates the result of the receipt of
- the Echo-Request. Current valid Result
- Code values are:
-
- 1 (OK) - The Echo-Reply is valid
-
- 2 (General Error) - Echo-Request not
- accepted for the reason indicated in
- Error Code
-
- Error Code This field is set to 0 unless a "General
-
-
-
-Hamzeh, et al [Page 19]
-
-Internet Draft PPTP July 1997
-
-
- Error" condition exists, in which case
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- Section 2.16.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 20]
-
-Internet Draft PPTP July 1997
-
-
-2.7 Outgoing-Call-Request
-
- The Outgoing-Call-Request is a PPTP control message sent by the PNS
- to the PAC to indicate that an outbound call from the PAC is to be
- established. This request provides the PAC with information required
- to make the call. It also provides information to the PAC that is
- used to regulate the transmission of data to the PNS for this session
- once it is established.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Call Serial Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Minimum BPS |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Maximum BPS |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Bearer Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Recv. Window Size | Packet Processing Delay |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Phone Number Length | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Phone Number (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Subaddress (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
-
-
-
-Hamzeh, et al [Page 21]
-
-Internet Draft PPTP July 1997
-
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 7 for Outgoing-Call-Request.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier, unique to a
- particular PAC-PNS pair assigned by the
- PNS to this session. It is used to
- multiplex and demultiplex data sent over
- the tunnel between the PNS and PAC
- involved in this session.
-
- Call Serial Number An identifier assigned by the PNS to this
- session for the purpose of identifying
- this particular session in logged session
- information. Unlike the Call ID, both
- the PNS and PAC associate the same Call
- Serial Number with a given session. The
- combination of IP address and call serial
- number SHOULD be unique.
-
- Minimum BPS The lowest acceptable line speed (in
- bits/second) for this session.
-
- Maximum BPS The highest acceptable line speed (in
- bits/second) for this session.
-
- Bearer Type A value indicating the bearer capability
- required for this outgoing call. The
- currently defined values are:
-
- 1 - Call to be placed on an analog
- channel
-
- 2 - Call to be placed on a digital
- channel
-
- 3 - Call can be placed on any type of
- channel
-
- Framing Type A value indicating the type of PPP
- framing to be used for this outgoing
- call.
-
- 1 - Call to use Asynchronous framing
-
- 2 - Call to use Synchronous framing
-
-
-
-Hamzeh, et al [Page 22]
-
-Internet Draft PPTP July 1997
-
-
- 3 - Call can use either type of
- framing
-
- Packet Recv. Window Size The number of received data packets the
- PNS will buffer for this session.
-
- Packet Processing Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PNS from the PAC. This value is
- specified in units of 1/10 seconds. For
- the PNS this number should be very small.
- See appendix A for a description of how
- this value is determined and used.
-
- Phone Number Length The actual number of valid digits in the
- Phone Number field.
-
- Reserved1 This field MUST be 0.
-
- Phone Number The number to be dialed to establish the
- outgoing session. For ISDN and analog
- calls this field is an ASCII string. If
- the Phone Number is less than 64 octets
- in length, the remainder of this field is
- filled with octets of value 0.
-
- Subaddress A 64 octet field used to specify
- additional dialing information. If the
- subaddress is less than 64 octets long,
- the remainder of this field is filled
- with octets of value 0.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 23]
-
-Internet Draft PPTP July 1997
-
-
-2.8 Outgoing-Call-Reply
-
- The Outgoing-Call-Reply is a PPTP control message sent by the PAC to
- the PNS in response to a received Outgoing-Call-Request message. The
- reply indicates the result of the outgoing call attempt. It also
- provides information to the PNS about particular parameters used for
- the call. It provides information to allow the PNS to regulate the
- transmission of data to the PAC for this session.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Peer's Call ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Cause Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Connect Speed |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Recv. Window Size | Packet Processing Delay |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Physical Channel ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 8 for Outgoing-Call-Reply.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier for the tunnel,
- assigned by the PAC to this session. It
- is used to multiplex and demultiplex data
- sent over the tunnel between the PNS and
- PAC involved in this session.
-
-
-
-
-Hamzeh, et al [Page 24]
-
-Internet Draft PPTP July 1997
-
-
- Peer's Call ID This field is set to the value received
- in the Call ID field of the corresponding
- Outgoing-Call-Request message. It is
- used by the PNS to match the Outgoing-
- Call-Reply with the Outgoing-Call-Request
- it issued. It also is used as the value
- sent in the GRE header for mux/demuxing.
-
- Result Code This value indicates the result of the
- Outgoing-Call-Request attempt. Currently
- valid values are:
-
- 1 (Connected) - Call established with
- no errors
-
- 2 (General Error) - Outgoing Call not
- established for the reason indicated
- in Error Code
-
- 3 (No Carrier) - Outgoing Call failed
- due to no carrier detected
-
- 4 (Busy) - Outgoing Call failed due to
- detection of a busy signal
-
- 5 (No Dial Tone) - Outgoing Call
- failed due to lack of a dial tone
-
- 6 (Time-out) - Outgoing Call was not
- established within time allotted by
- PAC
-
- 7 (Do Not Accept) - Outgoing Call
- administratively prohibited
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- Section 2.16.
-
- Cause Code This field gives additional failure
- information. Its value can vary
- depending upon the type of call
- attempted. For ISDN call attempts it is
- the Q.931 cause code.
-
-
-
-
-Hamzeh, et al [Page 25]
-
-Internet Draft PPTP July 1997
-
-
- Connect Speed The actual connection speed used, in
- bits/second.
-
- Packet Recv. Window Size The number of received data packets the
- PAC will buffer for this session.
-
- Packet Processing Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PAC from the PNS. This value is
- specified in units of 1/10 seconds. For
- the PAC, this number is related to the
- size of the buffer used to hold packets
- to be sent to the client and to the speed
- of the link to the client. This value
- should be set to the maximum delay that
- can normally occur between the time a
- packet arrives at the PAC and is
- delivered to the client. See Appendix A
- for an example of how this value is
- determined and used.
-
- Physical Channel ID This field is set by the PAC in a
- vendor-specific manner to the physical
- channel number used to place this call.
- It is used for logging purposes only.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 26]
-
-Internet Draft PPTP July 1997
-
-
-2.9 Incoming-Call-Request
-
- The Incoming-Call-Request is a PPTP control message sent by the PAC
- to the PNS to indicate that an inbound call is to be established from
- the PAC. This request provides the PNS with parameter information
- for the incoming call.
-
- This message is the first in the "three-way handshake" used by PPTP
- for establishing incoming calls. The PAC may defer answering the
- call until it has received an Incoming-Call-Reply from the PNS
- indicating that the call should be established. This mechanism allows
- the PNS to obtain sufficient information about the call before it is
- answered to determine whether the call should be answered or not.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Call Serial Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call Bearer Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Physical Channel ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Dialed Number Length | Dialing Number Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Dialed Number (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Dialing Number (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Subaddress (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
-
-
-Hamzeh, et al [Page 27]
-
-Internet Draft PPTP July 1997
-
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 9 for Incoming-Call-Request.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier for this tunnel,
- assigned by the PAC to this session. It
- is used to multiplex and demultiplex data
- sent over the tunnel between the PNS and
- PAC involved in this session.
-
- Call Serial Number An identifier assigned by the PAC to this
- session for the purpose of identifying
- this particular session in logged session
- information. Unlike the Call ID, both
- the PNS and PAC associate the same Call
- Serial Number to a given session. The
- combination of IP address and call serial
- number should be unique.
-
- Bearer Type A value indicating the bearer capability
- used for this incoming call. Currently
- defined values are:
-
- 1 - Call is on an analog channel
-
- 2 - Call is on a digital channel
-
- Physical Channel ID This field is set by the PAC in a
- vendor-specific manner to the number of
- the physical channel this call arrived
- on.
-
- Dialed Number Length The actual number of valid digits in the
- Dialed Number field.
-
- Dialing Number Length The actual number of valid digits in the
- Dialing Number field.
-
- Dialed Number The number that was dialed by the caller.
- For ISDN and analog calls this field is
- an ASCII string. If the Dialed Number is
- less than 64 octets in length, the
- remainder of this field is filled with
- octets of value 0.
-
-
-
-Hamzeh, et al [Page 28]
-
-Internet Draft PPTP July 1997
-
-
- Dialing Number The number from which the call was
- placed. For ISDN and analog calls this
- field is an ASCII string. If the Dialing
- Number is less than 64 octets in length,
- the remainder of this field is filled
- with octets of value 0.
-
- Subaddress A 64 octet field used to specify
- additional dialing information. If the
- subaddress is less than 64 octets long,
- the remainder of this field is filled
- with octets of value 0.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 29]
-
-Internet Draft PPTP July 1997
-
-
-2.10 Incoming-Call-Reply
-
- The Incoming-Call-Reply is a PPTP control message sent by the PNS to
- the PAC in response to a received Incoming-Call-Request message. The
- reply indicates the result of the incoming call attempt. It also
- provides information to allow the PAC to regulate the transmission of
- data to the PNS for this session.
-
- This message is the second in the three-way handshake used by PPTP
- for establishing incoming calls. It indicates to the PAC whether the
- call should be answered or not.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Peer's Call ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Packet Recv. Window Size |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Transmit Delay | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 10 for Incoming-Call-Reply.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier for this tunnel
- assigned by the PAC to this session. It
- is used to multiplex and demultiplex data
- sent over the tunnel between the PNS and
- PAC involved in this session.
-
- Peer's Call ID This field is set to the value received
-
-
-
-Hamzeh, et al [Page 30]
-
-Internet Draft PPTP July 1997
-
-
- in the Call ID field of the corresponding
- Incoming-Call-Request message. It is used
- by the PAC to match the Incoming-Call-
- Reply with the Incoming-Call-Request it
- issued. This value is included in the GRE
- header of transmitted data packets for
- this session.
-
- Result Code This value indicates the result of the
- Incoming-Call-Request attempt. Current
- valid Result Code values are:
-
- 1 (Connect) - The PAC should answer
- the incoming call
-
- 2 (General Error) - The Incoming Call
- should not be established due to the
- reason indicated in Error Code
-
- 3 (Do Not Accept) - The PAC should not
- accept the incoming call. It should
- hang up or issue a busy indication
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- Section 2.16.
-
- Packet Recv. Window Size The number of received data packets the
- PAC will buffer for this session.
-
- Packet Transmit Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PAC from the PNS. This value is
- specified in units of 1/10 seconds. See
- Appendix A for a description of how this
- value is determined and used.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 31]
-
-Internet Draft PPTP July 1997
-
-
-2.11 Incoming-Call-Connected
-
- The Incoming-Call-Connected message is a PPTP control message sent by
- the PAC to the PNS in response to a received Incoming-Call-Reply. It
- provides information to the PNS about particular parameters used for
- the call. It also provides information to allow the PNS to regulate
- the transmission of data to the PAC for this session.
-
- This message is the third in the three-way handshake used by PPTP for
- establishing incoming calls. It provides a mechanism for providing
- the PNS with additional information about the call that cannot, in
- general, be obtained at the time the Incoming-Call-Request is issued
- by the PAC.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer's Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Connect Speed |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Recv. Window Size | Packet Transmit Delay |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 11 for Incoming-Call-Connected.
-
- Reserved0 This field MUST be 0.
-
- Peer's Call ID This field is set to the value received
- in the Call ID field of the corresponding
- Incoming-Call-Reply message. It is used
-
-
-
-Hamzeh, et al [Page 32]
-
-Internet Draft PPTP July 1997
-
-
- by the PNS to match the Incoming-Call-
- Connected with the Incoming-Call-Reply it
- issued.
-
- Connect Speed The actual connection speed used, in
- bits/second.
-
- Packet Recv. Window Size The number of received data packets the
- PAC will buffer for this session.
-
- Packet Transmit Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PAC from the PNS. This value is
- specified in units of 1/10 seconds. See
- Appendix A for a description of how this
- value is determined and used.
-
- Framing Type A value indicating the type of PPP
- framing being used by this incoming call.
-
- 1 - Call uses asynchronous framing
-
- 2 - Call uses synchronous framing
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 33]
-
-Internet Draft PPTP July 1997
-
-
-2.12 Call-Clear-Request
-
- The Call-Clear-Request is a PPTP control message sent by the PNS to
- the PAC indicating that a particular call is to be disconnected. The
- call being cleared can be either an incoming or outgoing call, in any
- state. The PAC responds to this message with a Call-Disconnect-
- Notify message.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 12 for Call-Clear-Request.
-
- Reserved0 This field MUST be 0.
-
- Call ID The Call ID assigned by the PNS to this
- call. This value is used instead of the
- Peer's Call ID because the latter may not
- be known to the PNS if the call must be
- aborted during call establishment.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 34]
-
-Internet Draft PPTP July 1997
-
-
-2.13 Call-Disconnect-Notify
-
- The Call-Disconnect-Notify message is a PPTP control message sent by
- the PAC to the PNS. It is issued whenever a call is disconnected,
- due to the receipt by the PAC of a Call-Clear-Request or for any
- other reason. Its purpose is to inform the PNS of both the
- disconnection and the reason for it.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Result Code | Error Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Cause Code | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Call Statistics (128 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 13 for Call-Disconnect-Notify.
-
- Reserved0 This field MUST be 0.
-
- Call ID The value of the Call ID assigned by the
- PAC to this call. This value is used
- instead of the Peer's Call ID because the
- latter may not be known to the PNS if the
- call must be aborted during call
- establishment.
-
- Result Code This value indicates the reason for the
- disconnect. Current valid Result Code
-
-
-
-Hamzeh, et al [Page 35]
-
-Internet Draft PPTP July 1997
-
-
- values are:
-
- 1 (Lost Carrier) - Call disconnected
- due to loss of carrier
-
- 2 (General Error) - Call disconnected
- for the reason indicated in Error
- Code
-
- 3 (Admin Shutdown) - Call disconnected
- for administrative reasons
-
- 4 (Request) - Call disconnected due to
- received Call-Clear-Request
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case
- the Result Code is set to 2 and this
- field is set to the value corresponding
- to the general error condition as
- specified in Section 2.16.
-
- Cause Code This field gives additional disconnect
- information. Its value varies depending
- on the type of call being disconnected.
- For ISDN calls it is the Q.931 cause
- code.
-
- Call Statistics This field is an ASCII string containing
- vendor-specific call statistics that can
- be logged for diagnostic purposes. If
- the length of the string is less than
- 128, the remainder of the field is filled
- with octets of value 0.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 36]
-
-Internet Draft PPTP July 1997
-
-
-2.14 WAN-Error-Notify
-
- The WAN-Error-Notify message is a PPTP control message sent by the
- PAC to the PNS to indicate WAN error conditions (conditions that
- occur on the interface supporting PPP). The counters in this message
- are cumulative. This message should only be sent when an error
- occurs, and not more than once every 60 seconds. The counters are
- reset when a new call is established.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer's Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | CRC Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Hardware Overruns |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Buffer Overruns |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time-out Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Alignment Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 14 for WAN-Error-Notify.
-
- Reserved0 This field MUST be 0.
-
- Peer's Call ID Th Call ID assigned by the PNS to this
- call.
-
-
-
-Hamzeh, et al [Page 37]
-
-Internet Draft PPTP July 1997
-
-
- CRC Errors Number of PPP frames received with CRC
- errors since session was established.
-
- Framing Errors Number of improperly framed PPP packets
- received.
-
- Hardware Overruns Number of receive buffer over-runs since
- session was established.
-
- Buffer Overruns Number of buffer over-runs detected since
- session was established.
-
- Time-out Errors Number of time-outs since call was
- established.
-
- Alignment Errors Number of alignment errors since call was
- established.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 38]
-
-Internet Draft PPTP July 1997
-
-
-2.15 Set-Link-Info
-
- The Set-Link-Info message is a PPTP control message sent by the PNS
- to the PAC to set PPP-negotiated options. Because these options can
- change at any time during the life of the call, the PAC must be able
- to update its internal call information dynamically and perform PPP
- negotiation on an active PPP session.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer's Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Send ACCM |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Receive ACCM |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 15 for Set-Link-Info.
-
- Reserved0 This field MUST be 0.
-
- Peer's Call ID The value of the Call ID assigned by the
- PAC to this call.
-
- Reserved1 This field MUST be 0.
-
- Send ACCM The send ACCM value the client should use
- to process outgoing PPP packets. The
- default value used by the client until
- this message is received is 0XFFFFFFFF.
- See [7].
-
-
-
-
-Hamzeh, et al [Page 39]
-
-Internet Draft PPTP July 1997
-
-
- Receive ACCM The receive ACCM value the client should
- use to process incoming PPP packets. The
- default value used by the client until
- this message is received is 0XFFFFFFFF.
- See [7].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 40]
-
-Internet Draft PPTP July 1997
-
-
-2.16 General Error Codes
-
- General error codes pertain to types of errors which are not specific
- to any particular PPTP request, but rather to protocol or message
- format errors. If a PPTP reply indicates in its Result Code that a
- general error occurred, the General Error value should be examined to
- determined what the error was. The currently defined General Error
- codes and their meanings are:
-
- 0 (None) - No general error
-
- 1 (Not-Connected) - No control connection exists yet for this
- PAC-PNS pair
-
- 2 (Bad-Format) - Length is wrong or Magic Cookie value is
- incorrect
-
- 3 (Bad-Value) - One of the field values was out of range or
- reserved field was non-zero
-
- 4 (No-Resource) - Insufficient resources to handle this command
- now
-
- 5 (Bad-Call ID) - The Call ID is invalid in this context
-
- 6 (PAC-Error) - A generic vendor-specific error occurred in
- the PAC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 41]
-
-Internet Draft PPTP July 1997
-
-
-3.0 Control Connection Protocol Operation
-
- This section describes the operation of various PPTP control
- connection functions and the Control Connection messages which are
- used to support them. The protocol operation of the control
- connection is simplified because TCP is used to provide a reliable
- transport mechanism.
- Ordering and retransmission of messages is not a concern at this
- level. The TCP connection itself, however, can close at any time and
- an appropriate error recovery mechanism must be provided to handle
- this case.
-
- Some error recovery procedures are common to all states of the
- control connection. If an expected reply does not arrive within 60
- seconds, the control connection is closed, unless otherwise
- specified. Appropriate logging should be implemented for easy
- determination of the problems and the reasons for closing the control
- connection.
-
- Receipt of an invalid or malformed Control Connection message should
- be logged appropriately, and the control connection should be closed
- and restarted to ensure recovery into a known state.
-
-
-3.1 Control Connection States
-
- The control connection relies on a standard TCP connection for its
- service. The PPTP control connection protocol is not distinguishable
- between the PNS and PAC, but is distinguishable between the
- originator and receiver. The originating peer is the one which first
- attempts the TCP open. Since either PAC or PNS may originate a
- connection, it is possible for a TCP collision to occur. See Section
- 3.1.3 for a description of this situation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 42]
-
-Internet Draft PPTP July 1997
-
-
-3.1.1 Control Connection Originator (may be PAC or PNS)
-
- TCP Open Indication
- /Send Start Control
- Connection Request +-----------------+
- +------------------------------------>| wait_ctl_reply |
- | +-----------------+
- | Collision/See (3.1.3) Close TCP V V V Receive Start Ctl
- | +-------------------------------+ | | Connection Reply
- | | | | Version OK
- ^ V | V
- +-----------------+ Receive Start Ctl | +-----------------+
- | idle | Connection Reply | | established |
- +-----------------+ Version Not OK | +-----------------+
- ^ | V Local Terminate
- | Receive Stop Control | | /Send Stop
- | Connection Request | | Control Request
- | /Send Stop Control Reply V V
- | Close TCP +-----------------+
- +-------------------------------------| wait_stop_reply |
- +-----------------+
-
-
-
- idle
-
- The control connection originator attempts to open a TCP connection
- to the peer during idle state. When the TCP connection is open, the
- originator transmits a send Start-Control-Connection-Request and then
- enters the wait_ctl_reply state.
-
- wait_ctl_reply
-
- The originator checks to see if another TCP connection has been
- requested from the same peer, and if so, handles the collision
- situation described in Section 3.1.3.
-
- When a Start-Control-Connection-Reply is received, it is examined for
- a compatible version. If the version of the reply is lower than the
- version sent in the request, the older (lower) version should be used
- provided it is supported. If the version in the reply is earlier and
- supported, the originator moves to the established state. If the
- version is earlier and not supported, a Stop-Control-Connection-
- Request SHOULD be sent to the peer and the originator moves into the
- wait_stop_reply state.
-
-
-
-
-
-
-Hamzeh, et al [Page 43]
-
-Internet Draft PPTP July 1997
-
-
- established
-
- An established connection may be terminated by either a local
- condition or the receipt of a Stop-Control-Connection-Request. In the
- event of a local termination, the originator MUST send a Stop-
- Control-Connection-Request and enter the wait_stop_reply state.
-
- If the originator receives a Stop-Control-Connection-Request it
- SHOULD send a Stop-Control-Connection-Reply and close the TCP
- connection making sure that the final TCP information has been
- "pushed" properly.
-
- wait_stop_reply
-
- If a Stop-Control-Connection-Reply is received, the TCP connection
- SHOULD be closed and the control connection becomes idle.
-
-3.1.2 Control connection Receiver (may be PAC or PNS)
-
-
- Receive Start Control Connection Request
- Version Not OK/Send Start Control Connection
- Reply with Error
- +--------+
- | | Receive Control Connection Request Version OK
- | | /Send Start Control Connection Reply
- | | +----------------------------------------+
- ^ V ^ V
- +-----------------+ Receive Start Ctl +-----------------+
- | Idle | Connection Request | Established |
- +-----------------+ /Send Stop Reply +-----------------+
- ^ ^ Close TCP V V Local Terminate
- | +-------------------------------------+ | /Send Stop
- | | Control Conn.
- | V Request
- | +-----------------+
- +-------------------------------------| Wait-Stop-Reply |
- Receive Stop Control +-----------------+
- Connection Reply
- /Close TCP
-
- idle
-
- The control connection receiver waits for a TCP open attempt on port
- 1723. When notified of an open TCP connection, it should prepare to
- receive PPTP messages. When a Start-Control-Connection-Request is
- received its version field should be examined. If the version is
- earlier than the receiver's version and the earlier version can be
-
-
-
-Hamzeh, et al [Page 44]
-
-Internet Draft PPTP July 1997
-
-
- supported by the receiver, the receiver SHOULD send a Start-Control-
- Connection-Reply. If the version is earlier than the receiver's
- version and the version cannot be supported, the receiver SHOULD send
- a Start- Connection-Reply message, close the TCP connection and
- remain in the idle state. If the receiver's version is the same as
- earlier than the peer's, the receiver SHOULD send a Start-Control-
- Connection-Reply with the receiver's version and enter the
- established state.
-
- established
-
- An established connection may be terminated by either a local
- condition or the reception of a Stop-Control-Connection-Request. In
- the event of a local termination, the originator MUST send a Stop-
- Control-Connection-Request and enter the wait_stop_reply state.
-
- If the originator receives a Stop-Control-Connection-Request it
- SHOULD send a Stop-Control-Connection-Reply and close the TCP
- connection, making sure that the final TCP information has been
- "pushed" properly.
-
- wait_stop_reply
-
- If a Stop-Control-Connection-Reply is received, the TCP connection
- SHOULD be closed and the control connection becomes idle.
-
-3.1.3 Start Control Connection Initiation Request Collision
-
- A PAC and PNS must have only one control connection between them. It
- is possible, however, for a PNS and a PAC to simultaneously attempt
- to establish a control connection to each other. When a Start-
- Control-Connection-Request is received on one TCP connection and
- another Start-Control-Connection-Request has already been sent on
- another TCP connection to the same peer, a collision has occurred.
-
- The "winner" of the initiation race is the peer with the higher IP
- address (compared as 32 bit unsigned values, network number more
- significant). For example, if the peers 192.33.45.17 and 192.33.45.89
- collide, the latter will be declared the winner.
-
- The loser will immediately close the TCP connection it initiated,
- without sending any further PPTP control messages on it and will
- respond to the winner's request with a Start-Control-Connection-Reply
- message. The winner will wait for the Start-Control-Connection-Reply
- on the connection it initiated and also wait for a TCP termination
- indication on the connection the loser opened. The winner MUST NOT
- send any messages on the connection the loser initiated.
-
-
-
-
-Hamzeh, et al [Page 45]
-
-Internet Draft PPTP July 1997
-
-
-3.1.3 Keep Alives and Timers
-
- A control connection SHOULD be closed by closing the underlying TCP
- connection under the following circumstances:
-
- 1. If a control connection is not in the established state (i.e.,
- Start-Control-Connection-Request and Start-Control-Connection-
- Reply have not been exchanged), a control connection SHOULD be
- closed after 60 seconds by a peer waiting for a Start-Control-
- Connection-Request or Start-Control-Connection-Reply message.
-
- 2. If a peer's control connection is in the established state and has
- not received a control message for 60 seconds, it SHOULD send a
- Echo-Request message. If an Echo-Reply is not received 60 seconds
- after the Echo-Request message transmission, the control
- connection SHOULD be closed.
-
-3.2 Call States
-
-3.2.1 Timing considerations
-
- Because of the real-time nature of telephone signaling, both the PNS
- and PAC should be implemented with multi-threaded architectures such
- that messages related to multiple calls are not serialized and
- blocked. The transit delay between the PAC and PNS should not exceed
- one second. The call and connection state figures do not specify
- exceptions caused by timers. The implicit assumption is that since
- the TCP-based control connection is being verified with keep-alives,
- there is less need to maintain strict timers for call control
- messages.
-
- Establishing outbound international calls, including the modem
- training and negotiation sequences, may take in excess of 1 minute so
- the use of short timers is discouraged.
-
- If a state transition does not occur within 1 minute (except for
- connections in the idle or established states), the integrity of the
- protocol processing between the peers is suspect and the ENTIRE
- CONTROL CONNECTION should be closed and restarted. All Call IDs are
- logically released whenever a control connection is started. This
- presumably also helps in preventing toll calls from being "lost" and
- never cleared.
-
-3.2.2 Call ID values
-
- Each peer assigns a Call ID value to each user session it requests or
- accepts. This Call ID value MUST be unique for the tunnel between the
- PNS and PAC to which it belongs. Tunnels to other peers can use the
-
-
-
-Hamzeh, et al [Page 46]
-
-Internet Draft PPTP July 1997
-
-
- same Call ID number so the receiver of a packet on a tunnel needs to
- associate a user session with a particular tunnel and Call ID. It is
- suggested that the number of potential Call ID values for each tunnel
- be at least twice as large as the maximum number of calls expected on
- a given tunnel.
-
- A session is defined by the triple (PAC, PNS, Call ID).
-
-3.2.3 Incoming calls
-
- An Incoming-Call-Request message is generated by the PAC when an
- associated telephone line rings. The PAC selects a Call ID and serial
- number and indicates the call bearer type. Modems should always
- indicate analog call type. ISDN calls should indicate digital when
- unrestricted digital service or rate adaption is used and analog if
- digital modems are involved. Dialing number, dialed number, and
- subaddress may be included in the message if they are available from
- the telephone network.
-
- Once the PAC sends the Incoming-Call-Request, it waits for a response
- from the PNS but does not answer the call from the telephone network.
- The PNS may choose not to accept the call if:
-
- - No resources are available to handle more sessions
-
- - The dialed, dialing, or subaddress fields are not indicative of
- an authorized user
-
- - The bearer service is not authorized or supported
-
- If the PNS chooses to accept the call, it responds with an Outgoing-
- Call-Reply which also indicates window sizes (see Appendix B). When
- the PAC receives the Outgoing-Call-Reply, it attempts to connect the
- call, assuming the calling party has not hung up. A final call
- connected message from the PAC to the PNS indicates that the call
- states for both the PAC and the PNS should enter the established
- state.
-
- When the dialed-in client hangs up, the call is cleared normally and
- the PAC sends a Call-Disconnect-Notify message. If the PNS wishes to
- clear a call, it sends a Call-Clear-Request message and then waits
- for a Call-Disconnect-Notify.
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 47]
-
-Internet Draft PPTP July 1997
-
-
-3.2.3.1 PAC Incoming Call States
-
-
- Ring/Send Incoming Call Request +-----------------+
- +----------------------------------------->| wait_reply |
- | +-----------------+
- | Receive Incoming Call Reply V V V
- | Not Accepting | | | Receive Incoming
- | +--------------------------------+ | | Call Reply Accepting
- | | +------------------------------+ | /Answer call; Send
- | | | Abort/Send Call | Call Connected
- ^ V V Disconnect Notify V
- +-----------------+ +-----------------+
- | idle |<-----------------------------| established |
- +-----------------+ Receive Clear Call Request +-----------------+
- or telco call dropped
- or local disconnect
- /Send Call Disconnect Notify
-
-
-
- The states associated with the PAC for incoming calls are:
-
- idle
-
- The PAC detects an incoming call on one of its telco interfaces.
- Typically this means an analog line is ringing or an ISDN TE has
- detected an incoming Q.931 SETUP message. The PAC sends an Incoming-
- Call-Request message and moves to the wait_reply state.
-
- wait_reply
-
- The PAC receives an Incoming-Call-Reply message indicating non-
- willingness to accept the call (general error or don't accept) and
- moves back into the idle state. If the reply message indicates that
- the call is accepted, the PAC sends an Incoming-Call-Connected
- message and enters the established state.
-
- established
-
- Data is exchanged over the tunnel. The call may be cleared following:
-
- An event on the telco connection. The PAC sends a Call-
- Disconnect-Notify message
-
- Receipt of a Call-Clear-Request. The PAC sends a Call-Disconnect-
- Notify message
-
-
-
-
-Hamzeh, et al [Page 48]
-
-Internet Draft PPTP July 1997
-
-
- A local reason. The PAC sends a Call-Disconnect-Notify message.
-
-3.2.3.2 PNS Incoming Call States
-
-
-
- Receive Incoming Call Request
- /Send Incoming Call Reply +-----------------+
- Not Accepting if Error | Wait-Connect |
- +-----+ +-----------------+
- | | Receive Incoming Call Req. ^ V V
- | | /Send Incoming Call Reply OK | | | Receive Incoming
- | | +--------------------------------+ | | Call Connect
- ^ V ^ V------------------------------+ V
- +-----------------+ Receive Call Disconnect +-----------------+
- | Idle | Notify +- | Established |
- +-----------------+ | +-----------------+
- ^ ^ | V Local Terminate
- | +----------------------------+ | /Send Call Clear
- | Receive Call Disconnect | Request
- | Notify V
- | +-----------------+
- +--------------------------------------| Wait-Disconnect |
- Receive Call Disconnect +-----------------+
- Notify
-
-
-
- The states associated with the PNS for incoming calls are:
-
- idle
-
- An Incoming-Call-Request message is received. If the request is not
- acceptable, an Incoming-Call-Reply is sent back to the PAC and the
- PNS remains in the idle state. If the Incoming-Call-Request message
- is acceptable, an Incoming-Call-Reply is sent indicating accept in
- the result code. The session moves to the wait_connect state.
-
- wait_connect
-
- If the session is connected on the PAC, the PAC sends an incoming
- call connect message to the PNS which then moves into established
- state. The PAC may send a Call-Disconnect-Notify to indicate that the
- incoming caller could not be connected. This could happen, for
- example, if a telephone user accidently places a standard voice call
- to a PAC resulting in a handshake failure on the called modem.
-
-
-
-
-
-Hamzeh, et al [Page 49]
-
-Internet Draft PPTP July 1997
-
-
- established
-
- The session is terminated either by receipt of a Call-Disconnect-
- Notify message from the PAC or by sending a Call-Clear-Request. Once
- a Call-Clear-Request has been sent, the session enters the
- wait_disconnect state.
-
- wait_disconnect
-
- Once a Call-Disconnect-Notify is received the session moves back to
- the idle state.
-
-3.2.4 Outgoing calls
-
- Outgoing messages are initiated by a PNS and instruct a PAC to place
- a call on a telco interface. There are only two messages for outgoing
- calls: Outgoing-Call-Request and Outgoing-Call-Reply. The PNS sends
- an Outgoing-Call-Request specifying the dialed party phone number and
- subaddress as well as speed and window parameters. The PAC MUST
- respond to the Outgoing-Call-Request message with an Outgoing-Call-
- Reply message once the PAC determines that:
-
- The call has been successfully connected
-
- A call failure has occurred for reasons such as: no interfaces are
- available for dial-out, the called party is busy or does not
- answer, or no dial tone is detected on the interface chosen for
- dialing
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 50]
-
-Internet Draft PPTP July 1997
-
-
-3.2.4.1 PAC Outgoing Call States
-
-
-
- Receive Outgoing Call Request in Error
- /Send Outgoing Call Reply with Error
- |--------+
- | | Receive Outgoing Call Request No Error
- | | /Off Hook; Dial
- | | +-----------------------------------------
- ^ V ^ V
- +-----------------+ Incomplete Call +-----------------+
- | idle | /Send Outgoing Call | wait_cs_ans |
- +-----------------+ Reply with Error +-----------------+
- ^ ^ or Recv. Call Clear Req. V V Telco Answer
- | | /Send Disconnect Notify| | /Send Outgoing
- | +-------------------------------------+ | Call Reply.
- | V
- | +-----------------+
- +-------------------------------------| established |
- Receive Call Clear Request +-----------------+
- or local terminate
- or telco disconnect
- /Hangup call and send
- Call Disconnect Notify
-
-
-
- The states associated with the PAC for outgoing calls are:
-
- idle
-
- Received Outgoing-Call-Request. If this is received in error, respond
- with an Outgoing-Call-Reply with error condition set. Otherwise,
- allocate physical channel to dial on. Place the outbound call, wait
- for a connection, and move to the wait_cs_ans state.
-
- wait_cs_ans
-
- If the call is incomplete, send an Outgoing-Call-Reply with a non-
- zero Error Code. If a timer expires on an outbound call, send back an
- Outgoing-Call-Reply with a non-zero Error Code. If a circuit switched
- connection is established, send an Outgoing-Call-Reply indicating
- success.
-
- established
-
- If a Call-Clear-Request is received, the telco call SHOULD be
-
-
-
-Hamzeh, et al [Page 51]
-
-Internet Draft PPTP July 1997
-
-
- released via appropriate mechanisms and a Call-Disconnect-Notify
- message SHOULD BE sent to the PNS. If the call is disconnected by the
- client or by the telco interface, a Call-Disconnect-Notify message
- SHOULD be sent to the PNS.
-
-3.2.4.2 PNS Outgoing Call States
-
-
- Open Indication Abort/Send
- /Send Outgoing Call Call Clear
- Request +-----------------+ Request
- +-------------------------------->| Wait-Reply |------------+
- | +-----------------+ |
- | Receive Outgoing Call Reply V V Receive Outgoing |
- | with Error | | Call Reply |
- | +-------------------------------+ | No Error |
- ^ V V |
- +-----------------+ +-----------------+ |
- | Idle |<-----------------------------| Established | |
- +-----------------+ Receive Call Disconnect +-----------------+ |
- ^ Notify V Local Terminate |
- | | /Send Call Clear |
- | | Request |
- | Receive Call Disconnect V |
- | Notify +-----------------+ |
- +---------------------------------| Wait-Disconnect |<-----------+
- +-----------------+
-
-
- The states associated with the PNS for outgoing calls are:
-
- idle
-
- An Outgoing-Call-Request message is sent to the PAC and the session
- moves into the wait_reply state.
-
- wait_reply
-
- An Outgoing-Call-Reply is received which indicates an error. The
- session returns to idle state. No telco call is active. If the
- Outgoing-Call-Reply does not indicate an error, the telco call is
- connected and the session moves to the established state.
-
- established
-
- If a Call-Disconnect-Notify is received, the telco call has been
- terminated for the reason indicated in the Result and Cause Codes.
- The session moves back to the idle state. If the PNS chooses to
-
-
-
-Hamzeh, et al [Page 52]
-
-Internet Draft PPTP July 1997
-
-
- terminate the session, it sends a Call-Clear-Request to the PAC and
- then enters the wait_disconnect state.
-
- wait_disconnect
-
- A session disconnection is waiting to be confirmed by the PAC. Once
- the PNS receives the Call-Disconnect-Notify message, the session
- enters idle state.
-
-4.0 Tunnel Protocol Operation
-
- The user data carried by the PPTP protocol are PPP data packets. PPP
- packets are carried between the PAC and PNS, encapsulated in GRE
- packets which in turn are carried over IP. The encapsulated PPP
- packets are essentially PPP data packets less any media specific
- framing elements. No HDLC flags, bit insertion, control characters,
- or control character escapes are included. No CRCs are sent through
- the tunnel. The IP packets transmitted over the tunnels between a PAC
- and PNS has the following general structure:
-
- +--------------------------------+
- | Media Header |
- +--------------------------------+
- | IP Header |
- +--------------------------------+
- | GRE Header |
- +--------------------------------+
- | PPP Packet |
- +--------------------------------+
-
-
-4.1 Enhanced GRE header
-
- The GRE header used in PPTP is enhanced slightly from that specified
- in the current GRE protocol specification [1,2]. The main difference
- involves the definition of a new Acknowledgment Number field, used to
- determine if a particular GRE packet or set of packets has arrived at
- the remote end of the tunnel. This Acknowledgment capability is not
- used in conjunction with any retransmission of user data packets. It
- is used instead to determine the rate at which user data packets are
- to be transmitted over the tunnel for a given user session.
-
- The format of the enhanced GRE header is as follows:
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 53]
-
-Internet Draft PPTP July 1997
-
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |C|R|K|S|s|Recur|A| Flags | Ver | Protocol Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key (HW) Payload Length | Key (LW) Call ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Sequence Number (Optional) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Acknowledgment Number (Optional) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- C (Bit 0) Checksum Present. Set to zero
- (0).
-
- R (Bit 1) Routing Present. Set to zero
- (0).
-
- K (Bit 2) Key Present. Set to one (1).
-
- S (Bit 3) Sequence Number Present. Set to
- one (1) if a payload (data) packet is
- present. Set to zero (0) if payload is
- not present (GRE packet is an
- Acknowledgment only).
-
- s (Bit 4) Strict source route present. Set
- to zero (0).
-
- Recur (Bits 5-7) Recursion control. Set to
- zero (0).
-
- A (Bit 8) Acknowledgment sequence number
- present. Set to one (1) if packet
- contains Acknowledgment Number to be used
- for acknowledging previously transmitted
- data.
-
- Flags (Bits 9-12) Must be set to zero (0).
-
- Ver (Bits 13-15) Must contain 1 (enhanced
- GRE).
-
- Protocol Type Set to hex 880B [8].
-
- Key Use of the Key field is up to the
-
-
-
-Hamzeh, et al [Page 54]
-
-Internet Draft PPTP July 1997
-
-
- implementation.
- PPTP uses it as follows:
-
- Payload Length
- (High 2 octets of Key) Size of the
- payload, not including the GRE header
-
- Call ID
- (Low 2 octets) Contains the Peer's
- Call ID for the session to which this
- packet belongs.
-
- Sequence Number Contains the sequence number of the
- payload. Present if S bit (Bit 3) is one
- (1).
-
- Acknowledgment Number Contains the sequence number of the
- highest numbered GRE packet received by
- the sending peer for this user session.
- Present if A bit (Bit 8) is one (1).
-
- The payload section contains a PPP data packet without any media
- specific framing elements.
-
- The sequence numbers involved are per packet sequence numbers. The
- sequence number for each user session is set to zero at session
- startup. Each packet sent for a given user session which contains a
- payload (and has the S bit (Bit 3) set to one) is assigned the next
- consecutive sequence number for that session.
-
- This protocol allows acknowledgments to be carried with the data and
- makes the overall protocol more efficient, which in turn requires
- less buffering of packets.
-
-
-4.2 Sliding Window Protocol
-
- The sliding window protocol used on the PPTP data path is used for
- flow control by each side of the data exchange. The enhanced GRE
- protocol allows packet acknowledgments to be piggybacked on data
- packets. Acknowledgments can also be sent separately from data
- packets. Again, the main purpose of the sliding window protocol is
- for flow control--retransmissions are not performed by the tunnel
- peers.
-
-
-
-
-
-
-
-Hamzeh, et al [Page 55]
-
-Internet Draft PPTP July 1997
-
-
-4.3 Multi Packet Acknowledgment
-
- One feature of the PPTP sliding window protocol is that it allows the
- acknowledgment of multiple packets with a single acknowledgment. All
- outstanding packets with a sequence number lower or equal to the
- acknowledgment number are considered acknowledged. Time-out
- calculations are performed using the time the packet corresponding to
- the highest sequence number being acknowledged was transmitted.
-
-
- Adaptive time-out calculations are only performed when an
- Acknowledgment is received. When multi-packet acknowledgments are
- used, the overhead of the adaptive time-out algorithm is reduced. The
- PAC is not required to transmit multi-packet acknowledgments; it can
- instead acknowledge each packet individually as it is delivered to
- the PPP client.
-
-4.4 Out-of-Sequence Packets
-
- Occasionally packets lose their sequencing across a complicated
- internetwork. Say, for example that a PNS sends packets 0 to 5 to a
- PAC. Because of rerouting in the internetwork, packet 4 arrives at
- the PAC before packet 3. The PAC acknowledges packet 4, and may
- assume packet 3 is lost. This acknowledgment grants window credit
- beyond packet 4.
-
- When the PAC does receive packet 3, it MUST not attempt to transmit
- it to the corresponding PPP client. To do so could cause problems,
- as proper PPP protocol operation is premised upon receiving packets
- in sequence. PPP does properly deal with the loss of packets, but
- not with reordering so out of sequence packets between the PNS and
- PAC MUST be silently discarded, or they may be reordered by the
- receiver. When packet 5 comes in, it is acknowledged by the PAC
- since it has a higher sequence number than 4, which was the last
- highest packet acknowledged by the PAC. Packets with duplicate
- sequence numbers should never occur since the PAC and PNS never
- retransmit GRE packets. A robust implementation will silently
- discard duplicate GRE packets, should it receive any.
-
-5.0 Security Considerations
-
- Security issues are not addressed in this document. End to end
- security is addressed by PPP. Further security considerations will be
- addressed by the next version of PPTP.
-
-
-
-
-
-
-
-Hamzeh, et al [Page 56]
-
-Internet Draft PPTP July 1997
-
-
-6.0 Authors' Addresses
-
-
- Kory Hamzeh
- Ascend Communications
- 1275 Harbor Bay Parkway
- Alameda, CA 94502
- Email: kory@ascend.com
-
- Gurdeep Singh Pall
- Microsoft Corporation
- Redmond, WA
- Email: gurdeep@microsoft.com
-
- William Verthein
- U.S. Robotics/3Com
-
- Jeff Taarud
- Copper Mountain Networks
-
- W. Andrew Little
- ECI Telematics
-
-7.0 References
-
- [1] Hanks, S. Li, T., Farinacci, D. Traina, P., "Generic Routing
- Encapsulation (GRE)", RFC 1701, October 1994.
-
- [2] Hanks, S. Li, T., Farinacci, D. Traina, P., "Generic Routing
- Encapsulation (GRE) over IPv4 Networks", RFC 1702, October 1994.
-
- [3] Lloyd, B. Simpson, W., "PPP Authentication Protocols", RFC 1334,
- October 1992.
-
- [4] Postel, J. B., "Transmission Control Protocol", RFC 791,
- September 1981
-
- [5] Postel, J. B., "User Data Protocol", RFC 768, August 1980.
-
- [6] Reynolds, J., Postel, J., "Assigned Numbers", RFC 1700, October,
- 1994.
-
- [7] Simpson, W., editor, "The Point-to-Point Protocol (PPP)", RFC
- 1661, July 1994.
-
- [8] Ethertype for PPP, Reserved with Xerox Corporation.
-
-
-
-
-
-Hamzeh, et al [Page 57]
-
-Internet Draft PPTP July 1997
-
-
-Appendix A. Acknowledgment Time-Outs
-
-
- PPTP uses sliding windows and time-outs to provide both user session
- flow-control across the internetwork and to perform efficient data
- buffering to keep the PAC-PNS data channels full without causing
- receive buffer overflow. PPTP requires that a time-out be used to
- recover from dropped data or acknowledgment packets. The exact
- implementation of the time-out is vendor-specific. It is suggested
- that an adaptive time-out be implemented with backoff for congestion
- control. The time-out mechanism proposed here has the following
- properties:
-
- Independent time-outs for each session. A device (PAC or PNS) will
- have to maintain and calculate time-outs for every active session.
-
- An administrator-adjustable maximum time-out, MaxTimeOut, unique
- to each device.
-
- An adaptive time-out mechanism that compensates for changing
- throughput. To reduce packet processing overhead, vendors may
- choose not to recompute the adaptive time-out for every received
- acknowledgment. The result of this overhead reduction is that the
- time-out will not respond as quickly to rapid network changes.
-
- Timer backoff on time-out to reduce congestion. The backed-off
- timer value is limited by the configurable maximum time-out value.
- Timer backoff is done every time an acknowledgment time-out
- occurs.
-
- In general, this mechanism has the desirable behavior of quickly
- backing off upon a time-out and of slowly decreasing the time-out
- value as packets are delivered without time-outs.
-
- Some definitions:
-
- Packet Processing Delay (PPD) is the amount of time required for
- each side to process the maximum amount of data buffered in their
- receive packet sliding window. The PPD is the value exchanged
- between the PAC and PNS when a call is established. For the PNS,
- this number should be small. For a PAC making modem connections,
- this number could be significant.
-
- Sample is the actual amount of time incurred receiving an
- acknowledgment for a packet. The Sample is measured, not
- calculated.
-
- Round-Trip Time (RTT) is the estimated round-trip time for an
-
-
-
-Hamzeh, et al [Page 58]
-
-Internet Draft PPTP July 1997
-
-
- Acknowledgment to be received for a given transmitted packet. When
- the network link is a local network, this delay will be minimal
- (if not zero). When the network link is the Internet, this delay
- could be substantial and vary widely. RTT is adaptive: it will
- adjust to include the PPD and whatever shifting network delays
- contribute to the time between a packet being transmitted and
- receiving its acknowledgment.
-
- Adaptive Time-Out (ATO) is the time that must elapse before an
- acknowledgment is considered lost. After a time-out, the sliding
- window is partially closed and the ATO is backed off.
-
-
-Packet Processing Delay (PPD)
-
- The PPD parameter is a 16-bit word exchanged during the Call Control
- phase that represents tenths of a second (64 means 6.4 seconds). The
- protocol only specifies that the parameter is exchanged, it does not
- specify how it is calculated. The way values for PPD are calculated
- is implementation-dependent and need not be variable (static time-
- outs are allowed). The PPD must be exchanged in the call connect
- sequences, even if it remains constant in an implementation. One
- possible way to calculate the PPD is:
-
- PPD' = ((PPP_MAX_DATA_MTU - Header) * WindowSize * 8) / ConnectRate
- PPD = PPD' + PACFudge
-
- Header is the total size of the IP and GRE headers, which is 36. The
- MTU is the overall MTU for the internetwork link between the PAC and
- PNS. WindowSize represents the number of packets in the sliding
- window, and is implementation-dependent. The latency of the
- internetwork could be used to pick a window size sufficient to keep
- the current session's pipe full. The constant 8 converts octets to
- bits (assuming ConnectRate is in bits per second). If ConnectRate is
- in bytes per second, omit the 8. PACFudge is not required but can be
- used to take overall processing overhead of the PAC into account.
-
- The value of PPD is used to seed the adaptive algorithm with the
- initial RTT[n-1] value.
-
-Sample
-
- Sample is the actual measured time for a returned acknowledgment.
-
-Round-Trip Time (RTT)
-
- The RTT value represents an estimate of the average time it takes for
- an acknowledgment to be received after a packet is sent to the remote
-
-
-
-Hamzeh, et al [Page 59]
-
-Internet Draft PPTP July 1997
-
-
- end of the tunnel.
-
-
-A.1 Calculating Adaptive Acknowledgment Time-Out
-
- We still must decide how much time to allow for acknowledgments to
- return. If the time-out is set too high, we may wait an unnecessarily
- long time for dropped packets. If the time-out is too short, we may
- time out just before the acknowledgment arrives. The acknowledgment
- time-out should also be reasonable and responsive to changing network
- conditions.
-
- The suggested adaptive algorithm detailed below is based on the TCP
- 1989 implementation and is explained in Richard Steven's book TCP/IP
- Illustrated, Volume 1 (page 300). 'n' means this iteration of the
- calculation, and 'n-1' refers to values from the last calculation.
-
- DIFF[n] = SAMPLE[n] - RTT[n-1]
- DEV[n] = DEV[n-1] + (beta * (|DIFF[n]| - DEV[n-1]))
- RTT[n] = RTT[n-1] + (alpha * DIFF[n])
- ATO[n] = MIN (RTT[n] + (chi * DEV[n]), MaxTimeOut)
-
- DIFF represents the error between the last estimated round-trip
- time and the measured time. DIFF is calculated on each iteration.
-
- DEV is the estimated mean deviation. This approximates the
- standard deviation. DEV is calculated on each iteration and
- stored for use in the next iteration. Initially, it is set to 0.
-
- RTT is the estimated round-trip time of an average packet. RTT is
- calculated on each iteration and stored for use in the next
- iteration. Initially, it is set to PPD.
-
- ATO is the adaptive time-out for the next transmitted packet. ATO
- is calculated on each iteration. Its value is limited, by the MIN
- function, to be a maximum of the configured MaxTimeOut value.
-
- Alpha is the gain for the average and is typically 1/8 (0.125).
-
- Beta is the gain for the deviation and is typically 1/4 (0.250).
-
- Chi is the gain for the time-out and is typically set to 4.
-
- To eliminate division operations for fractional gain elements, the
- entire set of equations can be scaled. With the suggested gain
- constants, they should be scaled by 8 to eliminate all division. To
- simplify calculations, all gain values are kept to powers of two so
- that shift operations can be used in place of multiplication or
-
-
-
-Hamzeh, et al [Page 60]
-
-Internet Draft PPTP July 1997
-
-
- division.
-
-
-A.2 Congestion Control: Adjusting for Time-Out
-
- This section describes how the calculation of ATO is modified in the
- case where a time-out does occur. When a time-out occurs, the time-
- out value should be adjusted rapidly upward. Although the GRE
- packets are not retransmitted when a time-out occurs, the time-out
- should be adjusted up toward a maximum limit. To compensate for
- shifting internetwork time delays, a strategy must be employed to
- increase the time-out when it expires. A simple formula called
- Karn's Algorithm is used in TCP implementations and may be used in
- implementing the backoff timers for the PNS or the PAC. Notice that
- in addition to increasing the time-out, we are also shrinking the
- size of the window as described in the next section.
-
- Karn's timer backoff algorithm, as used in TCP, is:
-
-
- NewTIMEOUT = delta * TIMEOUT
-
- Adapted to our time-out calculations, for an interval in which a
- time-out occurs, the new ATO is calculated as:
-
- RTT[n] = delta * RTT[n-1]
- DEV[n] = DEV[n-1]
- ATO[n] = MIN (RTT[n] + (chi * DEV[n]), MaxTimeOut)
-
- In this modified calculation of ATO, only the two values that
- contribute to ATO and that are stored for the next iteration are
- calculated. RTT is scaled by chi, and DEV is unmodified. DIFF is not
- carried forward and is not used in this scenario. A value of 2 for
- Delta, the time-out gain factor for RTT, is suggested.
-
-Appendix B. Acknowledgment Time-Out and Window Adjustment
-
-B.1 Initial Window Size
-
- Although each side has indicated the maximum size of its receive
- window, it is recommended that a slow start method be used to begin
- transmitting data. The initial window size on the transmitter is set
- to half the maximum size the receiver requested, with a minimum size
- of one packet. The transmitter stops sending packets when the number
- of packets awaiting acknowledgment is equal to the current window
- size. As the receiver successfully digests each window, the window
- size on the transmitter is bumped up by one packet until the maximum
- is reached. This method prevents a system from flooding an already
-
-
-
-Hamzeh, et al [Page 61]
-
-Internet Draft PPTP July 1997
-
-
- congested network because no history has been established.
-
-B.2 Closing the Window
-
- When a time-out does occur on a packet, the sender adjusts the size
- of the transmit window down to one half its value when it failed.
- Fractions are rounded up, and the minimum window size is one.
-
-B.3 Opening the Window
-
- With every successful transmission of a window's worth of packets
- without a time-out, the transmit window size is increased by one
- packet until it reaches the maximum window size that was sent by the
- other side when the call was connected. As stated earlier, no
- retransmission is done on a time-out. After a time-out, the
- transmission resumes with the window starting at one half the size of
- the transmit window when the time-out occurred and adjusting upward
- by one each time the transmit window is filled with packets that are
- all acknowledged without time-outs.
-
-B.4 Window Overflow
-
- When a receiver's window overflows with too many incoming packets,
- excess packets are thrown away. This situation should not arise if
- the sliding window procedures are being properly followed by the
- transmitter and receiver. It is assumed that, on the transmit side,
- packets are buffered for transmission and are no longer accepted from
- the packet source when the transmit buffer fills.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 62]
-
-
diff --git a/doc/rfc1172.txt b/doc/rfc1172.txt
deleted file mode 100644
index 5307640..0000000
--- a/doc/rfc1172.txt
+++ /dev/null
@@ -1,2312 +0,0 @@
-
-
-
-
-
-
-Network Working Group D. Perkins
-Request for Comments: 1172 CMU
- R. Hobby
- UC Davis
- July 1990
-
-
-
- The Point-to-Point Protocol (PPP) Initial Configuration Options
-
-
-
-Status of this Memo
-
- This RFC specifies an IAB standards track protocol for the Internet
- community.
-
- Please refer to the current edition of the "IAB Official Protocol
- Standards" for the standardization state and status of this protocol.
-
- This proposal is the product of the Point-to-Point Protocol Working
- Group of the Internet Engineering Task Force (IETF). Comments on
- this memo should be submitted to the IETF Point-to-Point Protocol
- Working Group chair.
-
- Distribution of this memo is unlimited.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) provides a method for transmitting
- datagrams over serial point-to-point links. PPP is composed of
-
- 1) a method for encapsulating datagrams over serial links,
- 2) an extensible Link Control Protocol (LCP), and
- 3) a family of Network Control Protocols (NCP) for establishing
- and configuring different network-layer protocols.
-
- The PPP encapsulating scheme, the basic LCP, and an NCP for
- controlling and establishing the Internet Protocol (IP) (called the
- IP Control Protocol, IPCP) are defined in The Point-to-Point Protocol
- (PPP) [1].
-
- This document defines the intial options used by the LCP and IPCP. It
- also defines a method of Link Quality Monitoring and a simple
- authentication scheme.
-
-
-
-
-
-
-Perkins & Hobby [Page i]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Table of Contents
-
-
- 1. Introduction .......................................... 1
-
- 2. Link Control Protocol (LCP) Configuration Options ..... 1
- 2.1 Maximum-Receive-Unit ............................ 2
- 2.2 Async-Control-Character-Map ..................... 3
- 2.3 Authentication-Type ............................. 5
- 2.4 Magic-Number .................................... 7
- 2.5 Link-Quality-Monitoring ......................... 10
- 2.6 Protocol-Field-Compression ...................... 11
- 2.7 Address-and-Control-Field-Compression ........... 13
-
- 3. Link Quality Monitoring ............................... 15
- 3.1 Design Motivation ............................... 15
- 3.2 Design Overview ................................. 15
- 3.3 Processes ....................................... 16
- 3.4 Counters ........................................ 18
- 3.5 Measurements, Calculations, State Variables ..... 19
- 3.6 Link-Quality-Report Packet Format ............... 21
- 3.7 Policy Suggestions .............................. 25
- 3.8 Example ......................................... 25
-
- 4. Password Authentication Protocol ...................... 27
- 4.1 Packet Format ................................... 27
- 4.2 Authenticate .................................... 29
- 4.3 Authenticate-Ack ................................ 31
- 4.4 Authenticate-Nak ................................ 32
-
- 5. IP Control Protocol (IPCP) Configuration Options ...... 33
- 5.1 IP-Addresses .................................... 34
- 5.2 Compression-Type ................................ 36
-
- REFERENCES ................................................... 37
-
- SECURITY CONSIDERATIONS ...................................... 37
-
- AUTHOR'S ADDRESS ............................................. 37
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page ii]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-1. Introduction
-
- The Point-to-Point Protocol (PPP) [1] proposes a standard method of
- encapsulating IP datagrams, and other Network Layer protocol
- information, over point-to-point links. PPP also proposes an
- extensible Option Negotiation Protocol. [1] specifies only the
- protocol itself; the initial set of Configuration Options are
- described in this document. These Configuration Options allow MTUs
- to be changed, IP addresses to be dynamically assigned, header
- compression to be enabled, and much more.
-
- This memo is divided into several sections. Section 2 describes
- Configuration Options for the Link Control Protocol. Section 3
- specifies the use of the Link Quality Monitoring option. Section 4
- defines a simple Password Authentication Protocol. Finally, Section 5
- specifies Configuration Options for the IP Control Protocol.
-
-2. Link Control Protocol (LCP) Configuration Options
-
- As described in [1], LCP Configuration Options allow modifications to
- the standard characteristics of a point-to-point link to be
- negotiated. Negotiable modifications proposed in this document
- include such things as the maximum receive unit, async control
- character mapping, the link authentication method, etc.
-
- The initial proposed values for the LCP Configuration Option Type
- field (see [1]) are assigned as follows:
-
- 1 Maximum-Receive-Unit
- 2 Async-Control-Character-Map
- 3 Authentication-Type
- 4 NOT ASSIGNED
- 5 Magic-Number
- 6 Link-Quality-Monitoring
- 7 Protocol-Field-Compression
- 8 Address-and-Control-Field-Compression
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 1]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-2.1. Maximum-Receive-Unit
-
- Description
-
- This Configuration Option provides a way to negotiate the maximum
- packet size used across one direction of a link. By default, all
- implementations must be able to receive frames with 1500 octets of
- Information.
-
- This Configuration Option may be sent to inform the remote end
- that you can receive larger frames, or to request that the remote
- end send you smaller frames. If smaller frames are requested, an
- implementation MUST still be able to receive 1500 octet frames in
- case link synchronization is lost.
-
- A summary of the Maximum-Receive-Unit Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Maximum-Receive-Unit |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 1
-
- Length
-
- 4
-
- Maximum-Receive-Unit
-
- The Maximum-Receive-Unit field is two octets and indicates the new
- maximum receive unit. The Maximum-Receive-Unit covers only the
- Data Link Layer Information field but not the header, trailer or
- any transparency bits or bytes.
-
- Default
-
- 1500
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 2]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-2.2. Async-Control-Character-Map
-
- Description
-
- This Configuration Option provides a way to negotiate the use of
- control character mapping on asynchronous links. By default, PPP
- maps all control characters into an appropriate two character
- sequence. However, it is rarely necessary to map all control
- characters and often times it is unnecessary to map any
- characters. A PPP implementation may use this Configuration
- Option to inform the remote end which control characters must
- remain mapped and which control characters need not remain mapped
- when the remote end sends them. The remote end may still send
- these control characters in mapped format if it is necessary
- because of constraints at its (the remote) end. This option does
- not solve problems for communications links that can send only 7-
- bit characters or that can not send all non-control characters.
-
- There may be some use of synchronous-to-asynchronous converters
- (some built into modems) in Point-to-point links resulting in a
- synchronous PPP implementation on one end of a link and an
- asynchronous implemention on the other. It is the responsibility
- of the converter to do all mapping conversions during operation.
- To enable this functionality, synchronous PPP implementations MUST
- always accept a Async-Control-Character-Map Configuration Option
- (it MUST always respond to an LCP Configure-Request specifying
- this Configuration Option with an LCP Configure-Ack). However,
- acceptance of this Configuration Option does not imply that the
- synchronous implementation will do any character mapping, since
- synchronous PPP uses bit-stuffing rather than character-stuffing.
- Instead, all such character mapping will be performed by the
- asynchronous-to-synchronous converter.
-
- A summary of the Async-Control-Character-Map Configuration Option
- format is shown below. The fields are transmitted from left to
- right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Async-Control-Character-Map
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 2
-
-
-
-Perkins & Hobby [Page 3]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Length
-
- 6
-
- Async-Control-Character-Map
-
- The Async-Control-Character-Map field is four octets and indicates
- the new async control character map. The map is encoded in big-
- endian fashion where each numbered bit corresponds to the ASCII
- control character of the same value. If the bit is cleared to
- zero, then that ASCII control character need not be mapped. If
- the bit is set to one, then that ASCII control character must
- remain mapped. E.g., if bit 19 is set to zero, then the ASCII
- control character 19 (DC3, Control-S) may be sent in the clear.
-
- Default
-
- All ones (0xffffffff).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 4]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-2.3. Authentication-Type
-
- Description
-
- On some links it may be desirable to require a peer to
- authenticate itself before allowing Network Layer protocol data to
- be exchanged. This Configuration Option provides a way to
- negotiate the use of a specific authentication protocol. By
- default, authentication is not necessary. If an implementation
- requires that the remote end authenticate with some specific
- authentication protocol, then it should negotiate the use of that
- authentication protocol with this Configuration Option.
-
- Successful negotiation of the Authentication-Type option adds an
- additional Authentication phase to the Link Control Protocol.
- This phase is after the Link Quality Determination phase, and
- before the Network Layer Protocol Configuration Negotiation phase.
- Advancement from the Authentication phase to the Network Layer
- Protocol Configuration Negotiation phase may not occur until the
- peer is successfully authenticated using the negotiated
- authentication protocol.
-
- An implementation may allow the remote end to pick from more than
- one authentication protocol. To achieve this, it may include
- multiple Authentication-Type Configuration Options in its
- Configure-Request packets. An implementation receiving a
- Configure-Request specifying multiple Authentication-Types may
- accept at most one of the negotiable authentication protocols and
- should send a Configure-Reject specifying all of the other
- specified authentication protocols.
-
- It is recommended that each PPP implementation support
- configuration of authentication parameters at least on a per-
- interface basis, if not a per peer entity basis. The parameters
- should specify which authetication techniques are minimally
- required as a prerequisite to establishment of a PPP connection,
- either for the specified interface or for the specified peer
- entity. Such configuration facilities are necessary to prevent an
- attacker from negotiating a reduced security authentication
- protocol, or no authentication at all, in an attempt to circumvent
- this authentication facility.
-
- If an implementation sends a Configure-Ack with this Configuration
- Option, then it is agreeing to authenticate with the specified
- protocol. An implementation receiving a Configure-Ack with this
- Configuration Option should expect the remote end to authenticate
- with the acknowledged protocol.
-
-
-
-
-Perkins & Hobby [Page 5]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- There is no requirement that authentication be full duplex or that
- the same authentication protocol be used in both directions. It
- is perfectly acceptable for different authentication protocols to
- be used in each direction. This will, of course, depend on the
- specific authentication protocols negotiated.
-
- This document defines a simple Password Authentication Protocol in
- Section 4. Development of other more secure protocols is
- encouraged.
-
- A summary of the Authentication-Type Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Authentication-Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Type
-
- 3
-
- Length
-
- >= 4
-
- Authentication-Type
-
- The Authentication-Type field is two octets and indicates the type
- of authentication protocol desired. Values for the
- Authentication-Type are always the same as the PPP Data Link Layer
- Protocol field values for that same authentication protocol. The
- most up-to-date values of the Authentication-Type field are
- specified in "Assigned Numbers" [2]. Initial values are assigned
- as follows:
-
- Value (in hex) Protocol
-
- c023 Password Authentication Protocol
-
- Data
-
- The Data field is zero or more octets and contains additional data
- as determined by the particular authentication protocol.
-
-
-
-
-Perkins & Hobby [Page 6]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Default
-
- No authentication protocol necessary.
-
-
-2.4. Magic-Number
-
- Description
-
- This Configuration Option provides a way to detect looped-back
- links and other Data Link Layer anomalies. This Configuration
- Option may be required by some other Configuration Options such as
- the Link-Quality-Monitoring Configuration Option.
-
- Before this Configuration Option is requested, an implementation
- must choose its Magic-Number. It is recommended that the Magic-
- Number be chosen in the most random manner possible in order to
- guarantee with very high probability that an implementation will
- arrive at a unique number. A good way to choose a unique random
- number is to start with an unique seed. Suggested sources of
- uniqueness include machine serial numbers, other network hardware
- addresses, time-of-day clocks, etc. Particularly good random
- number seeds are precise measurements of the inter-arrival time of
- physical events such as packet reception on other connected
- networks, server response time, or the typing rate of a human
- user. It is also suggested that as many sources as possible be
- used simultaneously.
-
- When a Configure-Request is received with a Magic-Number
- Configuration Option, the received Magic-Number should be compared
- with the Magic-Number of the last Configure-Request sent to the
- peer. If the two Magic-Numbers are different, then the link is
- not looped-back, and the Magic-Number should be acknowledged. If
- the two Magic-Numbers are equal, then it is possible, but not
- certain, that the link is looped-back and that this Configure-
- Request is actually the one last sent. To determine this, a
- Configure-Nak should be sent specifying a different Magic-Number
- value. A new Configure-Request should not be sent to the peer
- until normal processing would cause it to be sent (i.e., until a
- Configure-Nak is received or the Restart timer runs out).
-
- Reception of a Configure-Nak with a Magic-Number different from
- that of the last Configure-Nak sent to the peer proves that a link
- is not looped-back, and indicates a unique Magic-Number. If the
- Magic-Number is equal to the one sent in the last Configure-Nak,
- the possibility of a loop-back is increased, and a new Magic-
- Number should be chosen. In either case, a new Configure-Request
- should be sent with the new Magic-Number.
-
-
-
-Perkins & Hobby [Page 7]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- If the link is indeed looped-back, this sequence (transmit
- Configure-Request, receive Configure-Request, transmit Configure-
- Nak, receive Configure-Nak) will repeat over and over again. If
- the link is not looped-back, this sequence may occur a few times,
- but it is extremely unlikely to occur repeatedly. More likely,
- the Magic-Numbers chosen at either end will quickly diverge,
- terminating the sequence. The following table shows the
- probability of collisions assuming that both ends of the link
- select Magic-Numbers with a perfectly uniform distribution:
-
- Number of Collisions Probability
- -------------------- ---------------------
- 1 1/2**32 = 2.3 E-10
- 2 1/2**32**2 = 5.4 E-20
- 3 1/2**32**3 = 1.3 E-29
-
- Good sources of uniqueness or randomness are required for this
- divergence to occur. If a good source of uniqueness cannot be
- found, it is recommended that this Configuration Option not be
- enabled; Configure-Requests with the option should not be
- transmitted and any Magic-Number Configuration Options which the
- peer sends should be either acknowledged or rejected. In this
- case, loop-backs cannot be reliably detected by the
- implementation, although they may still be detectable by the peer.
-
- If an implementation does transmit a Configure-Request with a
- Magic-Number Configuration Option, then it MUST NOT respond with a
- Configure-Reject if its peer also transmits a Configure-Request
- with a Magic-Number Configuration Option. That is, if an
- implementation desires to use Magic Numbers, then it MUST also
- allow its peer to do so. If an implementation does receive a
- Configure-Reject in response to a Configure-Request, it can only
- mean that the link is not looped-back, and that its peer will not
- be using Magic-Numbers. In this case, an implementation may act
- as if the negotiation had been successful (as if it had instead
- received a Configure-Ack).
-
- The Magic-Number also may be used to detect looped-back links
- during normal operation as well as during Configuration Option
- negotiation. All Echo-Request, Echo-Reply, Discard-Request, and
- Link-Quality-Report LCP packets have a Magic-Number field which
- MUST normally be transmitted as zero, and MUST normally be ignored
- on reception. However, once a Magic-Number has been successfully
- negotiated, an LCP implementation MUST begin transmitting these
- packets with the Magic-Number field set to its negotiated Magic-
- Number. Additionally, the Magic-Number field of these packets may
- be inspected on reception. All received Magic-Number fields should
- be equal to either zero or the peer's unique Magic-Number,
-
-
-
-Perkins & Hobby [Page 8]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- depending on whether or not the peer negotiated one. Reception of
- a Magic-Number field equal to the negotiated local Magic-Number
- indicates a looped-back link. Reception of a Magic-Number other
- than the negotiated local Magic-Number or or the peer's negotiated
- Magic-Number, or zero if the peer didn't negotiate one, indicates
- a link which has been (mis)configured for communications with a
- different peer.
-
- Procedures for recovery from either case are unspecified and may
- vary from implementation to implementation. A somewhat
- pessimistic procedure is to assume an LCP Physical-Layer-Down
- event and make an immediate transition to the Closed state. A
- further Active-Open event will begin the process of re-
- establishing the link, which can't complete until the loop-back
- condition is terminated and Magic-Numbers are successfully
- negotiated. A more optimistic procedure (in the case of a loop-
- back) is to begin transmitting LCP Echo-Request packets until an
- appropriate Echo-Reply is received, indicating a termination of
- the loop-back condition.
-
- A summary of the Magic-Number Configuration Option format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Magic-Number
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Magic-Number (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 5
-
- Length
-
- 6
-
- Magic-Number
-
- The Magic-Number field is four octets and indicates a number which
- is very likely to be unique to one end of the link. A Magic-
- Number of zero is illegal and must not be sent.
-
- Default
-
- None.
-
-
-
-Perkins & Hobby [Page 9]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-2.5. Link-Quality-Monitoring
-
- Description
-
- On some links it may be desirable to determine when, and how
- often, the link is dropping data. This process is called Link
- Quality Monitoring and is implemented by periodically transmitting
- Link-Quality-Report packets as described in Section 3. The Link-
- Quality-Monitoring Configuration Option provides a way to enable
- the use of Link-Quality-Report packets, and also to negotiate the
- rate at which they are transmitted. By default, Link Quality
- Monitoring and the use of Link-Quality-Report packets is disabled.
-
- A summary of the Link-Quality-Monitoring Configuration Option format
- is shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Reporting-Period
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Reporting-Period (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 6
-
- Length
-
- 6
-
- Reporting-Period
-
- The Reporting-Period field is four octets and indicates the
- maximum time in micro-seconds that the remote end should wait
- between transmission of LCP Link-Quality-Report packets. A value
- of zero is illegal and should always be nak'd or rejected. An LCP
- implementation is always free to transmit LCP Link-Quality-Report
- packets at a faster rate than that which was requested by, and
- acknowledged to, the remote end.
-
- Default
-
- None
-
-
-
-
-
-
-Perkins & Hobby [Page 10]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-2.6. Protocol-Field-Compression
-
- Description
-
- This Configuration Option provides a way to negotiate the
- compression of the Data Link Layer Protocol field. By default,
- all implementations must transmit standard PPP frames with two
- octet Protocol fields. However, PPP Protocol field numbers are
- chosen such that some values may be compressed into a single octet
- form which is clearly distinguishable from the two octet form.
- This Configuration Option may be sent to inform the remote end
- that you can receive compressed single octet Protocol fields.
- Compressed Protocol fields may not be transmitted unless this
- Configuration Option has been received.
-
- As previously mentioned, the Protocol field uses an extension
- mechanism consistent with the ISO 3309 extension mechanism for the
- Address field; the Least Significant Bit (LSB) of each octet is
- used to indicate extension of the Protocol field. A binary "0" as
- the LSB indicates that the Protocol field continues with the
- following octet. The presence of a binary "1" as the LSB marks
- the last octet of the Protocol field. Notice that any number of
- "0" octets may be prepended to the field, and will still indicate
- the same value (consider the two representations for 3, 00000011
- and 00000000 00000011).
-
- In the interest of simplicity, the standard PPP frame uses this
- fact and always sends Protocol fields with a two octet
- representation. Protocol field values less than 256 (decimal) are
- prepended with a single zero octet even though transmission of
- this, the zero and most significant octet, is unnecessary.
-
- However, when using low speed links, it is desirable to conserve
- bandwidth by sending as little redundant data as possible. The
- Protocol Compression Configuration Option allows a trade-off
- between implementation simplicity and bandwidth efficiency. If
- successfully negotiated, the ISO 3309 extension mechanism may be
- used to compress the Protocol field to one octet instead of two.
- The large majority of frames are compressible since data protocols
- are typically assigned with Protocol field values less than 256.
-
- To guarantee unambiguous recognition of LCP packets, the Protocol
- field must never be compressed when sending any LCP packet. In
- addition, PPP implementations must continue to be robust and MUST
- accept PPP frames with double-octet, as well as single-octet,
- Protocol fields, and MUST NOT distinguish between them.
-
- When a Protocol field is compressed, the Data Link Layer FCS field
-
-
-
-Perkins & Hobby [Page 11]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- is calculated on the compressed frame, not the original
- uncompressed frame.
-
- A summary of the Protocol-Field-Compression Configuration Option
- format is shown below. The fields are transmitted from left to
- right.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 7
-
- Length
-
- 2
-
- Default
-
- Disabled.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 12]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-2.7. Address-and-Control-Field-Compression
-
- Description
-
- This Configuration Option provides a way to negotiate the
- compression of the Data Link Layer Address and Control fields. By
- default all implementations must transmit frames with Address and
- Control fields and must use the hexadecimal values 0xff and 0x03
- respectively. Since these fields have constant values, they are
- easily compressed. this Configuration Option may be used to
- inform the remote end that you can receive compressed Address and
- Control fields.
-
- Compressed Address and Control fields are formed by simply
- omitting them in all non-ambiguous cases. Ambiguous frames may
- not be compressed. Ambiguous cases result when the two octets
- following the Address and Control fields have values that could be
- interpreted as valid Address and Control fields (i.e., 0xff,
- 0x03). This can happen when Protocol-Field-Compression is enabled
- and the Protocol field is compressed to one octet. If the
- Protocol value is 0xff, and the first octet of the Information
- field is 0x03, the result is ambiguous and the Address and Control
- fields must not be compressed on transmission.
-
- On reception, the Address and Control fields are decompressed by
- examining the first two octets. If they contain the values 0xff
- and 0x03, they are assumed to be the Address and Control fields.
- If not, it is assumed that the fields were compressed and were not
- transmitted.
-
- One additional case in which the Address and Control fields must
- never be compressed is when sending any LCP packet. This rule
- guarantees unambiguous recognition of LCP packets.
-
- When the Address and Control fields are compressed, the Data Link
- Layer FCS field is calculated on the compressed frame, not the
- original uncompressed frame.
-
- A summary of the Address-and-Control-Field-Compression configuration
- option format is shown below. The fields are transmitted from left
- to right.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-Perkins & Hobby [Page 13]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Type
-
- 8
-
- Length
-
- 2
-
- Default
-
- Not compressed.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 14]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-3. Link Quality Monitoring
-
- Data communications links are rarely perfect. Packets can be dropped
- or corrupted for various reasons (line noise, equipment failure,
- buffer overruns, etc.). Sometimes, it is desirable to determine
- when, and how often, the link is dropping data. Routers, for
- example, may want to temporarily allow another route to take
- precedence. An implementation may also have the option of
- disconnecting and switching to an alternate link. The process of
- determining data loss is called "Link Quality Monitoring".
-
-3.1. Design Motivation
-
- There are many different ways to measure link quality, and even more
- ways to react to it. Rather than specifying a single scheme, Link
- Quality Monitoring is divided into a "mechanism" and a "policy". PPP
- fully specifies the "mechanism" for Link Quality Monitoring by
- defining the LCP Link-Quality-Report (LQR) packet and specifying a
- procedure for its use. PPP does NOT specify a Link Quality
- Monitoring "policy" -- how to judge link quality or what to do when
- it is inadequate. That is left as an implementation decision, and
- can be different at each end of the link. Implementations are
- allowed, and even encouraged, to experiment with various link quality
- policies. The Link Quality Monitoring mechanism specification
- insures that two implementations with different policies may
- communicate and interoperate.
-
- To allow flexible policies to be implemented, the PPP Link Quality
- Monitoring mechanism measures data loss in units of packets, octets,
- and Link-Quality-Reports. Each measurement is made separately for
- each half of the link, both inbound and outbound. All measurements
- are communicated to both ends of the link so that each end of the
- link can implement its own link quality policy for both its outbound
- and inbound links.
-
- Finally, the Link Quality Monitoring protocol is designed to be
- implementable on many different kinds of systems. Although it may be
- common to implement PPP (and especially Link Quality Monitoring) as a
- single software process, multi-process implementations with hardware
- support are also envisioned. The PPP Link Quality Monitoring
- mechanism provides for this by careful definition of the Link-
- Quality-Report packet format, and by specifiying reference points for
- all data transmission and reception measurements.
-
-3.2. Design Overview
-
- Each Link Quality Monitoring implementation maintains counts of the
- number of packets and octets transmitted and successfully received,
-
-
-
-Perkins & Hobby [Page 15]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- and periodically transmits this information to its peer in a Link-
- Quality-Report packet. These packets contain three sections: a
- Header section, a Counters section, and a Measurements section.
-
- The Header section of the packet consists of the normal LCP Link
- Maintenance packet header including Code, Identifier, Length and
- Magic-Number fields.
-
- The Counters section of the packet consists of four counters, and
- provides the information necessary to measure the quality of the
- link. The LQR transmitter fills in two of these counters: Out-Tx-
- Packets-Ctr and Out-Tx-Octets-Ctr (described later). The LQR
- receiver fills in the two remaining counters: In-Rx-Packets-Ctr and
- In-Rx-Octets-Ctr (described later). These counters are similar to
- sequence numbers; they are constantly increasing to give a "relative"
- indication of the number of packets and octets communicated across
- the outbound link. By comparing the values in successive Link-
- Quality-Reports, an LQR receiver can compute the "absolute" number of
- packets and octets communicated across its inbound link. Comparing
- these absolute numbers then gives an indication of an inbound link's
- quality. Relative numbers, rather than absolute, are transmitted
- because they greatly simplify link synchronization; an implementation
- merely waits to receive two LQR packets.
-
- The Measurements section of the packet consists of six state
- variables: In-Tx-LQRs, Last-In-Id, In-Tx-Packets, In-Tx-Octets, In-
- Rx-Packets, and In-Rx-Octets (described later). This section allows
- an implementation to report inbound link quality measurements to its
- peer (for which the report will instead indicate outbound link
- quality) by transmitting the absolute, rather than relative, number
- of LQRs, packets, and octets communicated across the inbound link.
- These values are calculated by observing the Counters section of the
- Link-Quality-Report packets received on the inbound link. Absolute
- numbers may be used in this section without synchronization problems
- because it is necessary to receive only one LQR packet to have valid
- information.
-
- Link Quality Monitoring is described in more detail in the following
- sections. First, a description of the processes comprising the Link
- Quality Monitoring mechanism is presented. This is followed by the
- packet and byte counters maintained; the measurements, calculations,
- and state variables used; the format of the Link-Quality-Report
- packet; some policy suggestions; and, finally, an example link
- quality calculation.
-
-3.3. Processes
-
- The PPP Link Quality Monitoring mechanism is described using a
-
-
-
-Perkins & Hobby [Page 16]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- "logical process" model. As shown below, there are five logical
- processes duplicated at each end of the duplex link.
-
- +---------+ +-------+ +----+ Outbound
- | |-->| Mux |-->| Tx |=========>
- | Link- | +-------+ +----+
- | Manager |
- | | +-------+ +----+ Inbound
- | |<--| Demux |<--| Rx |<=========
- +---------+ +-------+ +----+
-
- Link-Manager
-
- The Link-Manager process transmits and receives Link-Quality-
- Reports, and implements the desired link quality policy. LQR
- packets are transmitted at a constant rate, which is negotiated by
- the LCP Link-Quality-Monitoring Configuration Option. The Link-
- Manager process fills in only the Header and Measurements sections
- of the packet; the Counters section of the packet is filled in by
- the Tx and Rx processes.
-
- Mux
-
- The Mux process multiplexes packets from the various protocols
- (e.g., LCP, IP, XNS, etc.) into a single, sequential, and
- prioritized stream of packets. Link-Quality-Report packets MUST
- be given the highest possible priority to insure that link quality
- information is communicated in a timely manner.
-
- Tx
-
- The Tx process maintains the counters Out-Tx-Packets-Ctr and Out-
- Tx-Octets-Ctr which are used to measure the amount of data which
- is transmitted on the outbound link. When Tx processes a Link-
- Quality-Report packet, it inserts the values of these counters
- into the Counters section of the packet. Because these counters
- represent relative, rather than absolute, values, the question of
- when to update the counters, before or after they are inserted
- into a Link-Quality-Report packet, is left as an implementation
- decision. However, an implementation MUST make this decision the
- same way every time. The Tx process MUST follow the Mux process
- so that packets are counted in the order transmitted to the link.
-
- Rx
-
- The Rx process maintains the counters In-Rx-Packets-Ctr and In-
- Rx-Octets-Ctr which are used to measure the amount of data which
- is received by the inbound link. When Rx processes a Link-
-
-
-
-Perkins & Hobby [Page 17]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Quality-Report packet, it inserts the values of these counters
- into the Counters section of the packet. Again, the question of
- when to update the counters, before or after they are inserted
- into a Link-Quality-Report packet, is left as an implementation
- decision which MUST be made consistently the same way.
-
- Demux
-
- The Demux process demultiplexes packets for the various protocols.
- The Demux process MUST follow the Rx process so that packets are
- counted in the order received from the link.
-
-3.4. Counters
-
- In order to fill in the Counters section of a Link-Quality-Report
- packet, Link Quality Monitoring requires the implementation of one
- 8-bit unsigned, and four 32-bit unsigned, monotonically increasing
- counters. These counters may be reset to any initial value before
- the first Link-Quality-Report is transmitted, but MUST NOT be reset
- again until LCP has left the Open state. Counters wrap to zero when
- their maximum value is reached (for 32 bit counters: 0xffffffff + 1 =
- 0).
-
- Out-Identifier-Ctr
-
- Out-Identifier-Ctr is an 8-bit counter maintained by the Link-
- Manager process which increases by one for each transmitted Link-
- Quality-Report packet.
-
- Out-Tx-Packets-Ctr
-
- Out-Tx-Packets-Ctr is a 32-bit counter maintained by the Tx
- process which increases by one for each transmitted Data Link
- Layer packet.
-
- Out-Tx-Octets-Ctr
-
- Out-Tx-Octets-Ctr is a 32-bit counter maintained by the Tx process
- which increases by one for each octet in a transmitted Data Link
- Layer packet. All octets which are included in the FCS
- calculation MUST be counted, as should the FCS octets themselves.
- All other octets MUST NOT be counted.
-
- In-Rx-Packets-Ctr
-
- In-Rx-Packets-Ctr is a 32-bit counter maintained by the Rx process
- which increases by one for each successfully received Data Link
- Layer packet. Packets with incorrect FCS fields or other problems
-
-
-
-Perkins & Hobby [Page 18]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- MUST not be counted.
-
- In-Rx-Octets-Ctr
-
- In-Rx-Octets-Ctr is a 32-bit counter maintained by the Rx process
- which increases by one for each octet in a successfully received
- Data Link Layer packet. All octets which are included in an FCS
- calculation MUST be counted, as should the FCS octets themselves.
- All other octets MUST NOT be counted.
-
-3.5. Measurements, Calculations, State Variables
-
- In order to fill in the Measurements section of a Link-Quality-Report
- packet, Link Quality Monitoring requires the Link-Manager process to
- make a number of calculations and keep a number of state variables.
- These calculations are made, and these state variables updated, each
- time a Link-Quality-Report packet is received from the inbound link.
-
- In-Tx-LQRs
-
- In-Tx-LQRs is an 8-bit state variable which indicates the number
- of Link-Quality-Report packets which the peer had to transmit in
- order for the local end to receive exactly one LQR. In-Tx-LQRs
- defines the length of the "period" over which In-Tx-Packets, In-
- Tx-Octets, In-Rx-Packets, and In-Rx-Octets were measured. In-Tx-
- LQRs is calculated by subtracting Last-In-Id from the received
- Identifier. If more than 255 LQRs in a row are lost, In-Tx-LQRs
- will be ambiguous since the Identifier field and all state
- variables based on it are only 8 bits. It is assumed that the
- Link Quality Monitoring policy will be robust enough to handle
- this case (it should probably close down the link long before this
- happens).
-
- Last-In-Id
-
- Last-In-Id is an 8-bit state variable which stores the value of
- the last received Identifier. Last-In-Id should be updated after
- In-Tx-LQRs has been calculated.
-
- In-Tx-Packets
-
- In-Tx-Packets is a 32-bit state variable which indicates the
- number of packets which were transmitted on the inbound link
- during the last period. In-Tx-Packets is calculated by
- subtracting Last-Out-Tx-Packets-Ctr from the received Out-Tx-
- Packets-Ctr.
-
-
-
-
-
-Perkins & Hobby [Page 19]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Last-Out-Tx-Packets-Ctr
-
- Last-Out-Tx-Packets-Ctr is a 32-bit state variable which stores
- the value of the last received Out-Tx-Packets-Ctr. Last-Out-Tx-
- Packets-Ctr should be updated after In-Tx-Packets has been
- calculated.
-
- In-Tx-Octets
-
- In-Tx-Octets is a 32-bit state variable which indicates the number
- of octets which were transmitted on the inbound link during the
- last period. In-Tx-Octets is calculated by subtracting Last-Out-
- Tx-Octets-Ctr from the received Out-Tx-Octets-Ctr.
-
- Last-Out-Tx-Octets-Ctr
-
- Last-Out-Tx-Octets-Ctr is a 32-bit state variable which stores the
- value of the last received Out-Tx-Octets-Ctr. Last-Out-Tx-
- Octets-Ctr should be updated after In-Tx-Octets has been
- calculated.
-
- In-Rx-Packets
-
- In-Rx-Packets is a 32-bit state variable which indicates the
- number of packets which were received on the inbound link during
- the last period. In-Rx-Packets is calculated by subtracting
- Last-In-Rx-Packets-Ctr from the received In-Rx-Packets-Ctr.
-
- Last-In-Rx-Packets-Ctr
-
- Last-In-Rx-Packets-Ctr is a 32-bit state variable which stores the
- value of the last received In-Rx-Packets-Ctr. Last-In-Rx-
- Packets-Ctr should be updated after In-Rx-Packets has been
- calculated.
-
- In-Rx-Octets
-
- In-Rx-Octets is a 32-bit state variable which indicates the number
- of octets which were received on the inbound link during the last
- period. In-Rx-Octets is calculated by subtracting Last-In-Rx-
- Octets-Ctr from the received In-Rx-Octets-Ctr.
-
- Last-In-Rx-Octets-Ctr
-
- Last-In-Rx-Octets-Ctr is a 32-bit state variable which stores the
- value of the last received In-Rx-Octets-Ctr. Last-In-Rx-Octets-
- Ctr should be updated after In-Rx-Octets has been calculated.
-
-
-
-
-Perkins & Hobby [Page 20]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Measurements-Valid
-
- Measurements-Valid is a 1-bit boolean state variable which
- indicates whether or not the In-Tx-Packets, In-Tx-Octets, In-Rx-
- Packets, and In-Rx-Octets state variables contain valid
- measurements. These measurements cannot be considered valid until
- two or more Link-Quality-Report packets have been received on the
- inbound link. This bit should be reset when LCP reaches the Open
- state and should be set after the receipt of exactly two LQRs.
-
-3.6. Link-Quality-Report Packet Format
-
- A Summary of the Link-Quality-Report packet format is shown below.
- The fields are transmitted from left to right. The Code, Identifier,
- Length, and Magic-Number fields make up the normal LCP Link
- Maintenance packet header; the In-Tx-LQRS, Last-In-Id, V, In-Tx-
- Packets, In-Tx-Octets, In-Rx-Packets, In-Rx-Octets fields contain
- digested absolute measurements; and the Out-Tx-Packets-Ctr, Out-Tx-
- Octets-Ctr, In-Rx-Packets-Ctr, and In-Rx-Octets-Ctr fields contain
- raw relative counts. Note that as transmitted over the link, this
- packet format does not include the In-Rx-Packets-Ctr and In-Rx-
- Octets-Ctr fields which are logically appended to the packet by the
- Rx process after reception on the inbound link.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 21]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic-Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | In-Tx-LQRs | Last-In-Id | Reserved |V|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | In-Tx-Packets |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | In-Tx-Octets |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | In-Rx-Packets |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | In-Rx-Octets |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Out-Tx-Packets-Ctr |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Out-Tx-Octets-Ctr |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- /
- /
- /
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | In-Rx-Packets-Ctr |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | In-Rx-Octets-Ctr |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Code
-
- 12 for Link-Quality-Report.
-
- Identifier
-
- The Identifier field is one octet and indicates the sequence
- number for this Link-Quality-Report. The Identifier field is
- copied from the Out-Identifier-Ctr counter on transmission. On
- reception, the Identifier field is used to calculate In-Tx-LQRs
- and is then stored in Last-In-Id.
-
- The Link-Quality-Report Identifier sequence number space MUST be
- separate from that of all other LCP packets; for example,
- transmission of an LCP Echo-Request must not cause the Out-
- Identifier-Ctr counter to be incremented.
-
-
-
-
-
-Perkins & Hobby [Page 22]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Length
-
- The Length field is two octets and indicates the length of the LQM
- packet including the Code, Identifier, Length and all defined
- fields. Octets outside the range of the length field should be
- treated as Data Link Layer padding and should be ignored on
- reception. In order for the correct In-Tx-Octets and In-Rx-Octets
- values to be calculated, Link-Quality-Reports MUST be consistently
- transmitted with the same amount of padding.
-
- Magic-Number
-
- The Magic-Number field is four octets and aids in detecting
- looped-back links. Unless modified by a Configuration Option, the
- Magic-Number MUST always be transmitted as zero and MUST always be
- ignored on reception. If Magic-Numbers have been negotiated,
- incoming LQM packets should be checked to make sure that the local
- end is not seeing its own Magic-Number and thus a looped-back
- link.
-
- In-Tx-LQRs
-
- The In-Tx-LQRs field is one octet and indicates the number of
- periods covered by the Measurements section of this Link-Quality-
- Report. The In-Tx-LQRs field is copied from the In-Tx-LQRs state
- variable on transmission.
-
- Last-In-Id
-
- The Prev-In-Id field is one octet and indicates the age of the
- Measurements section of this Link-Quality-Report. The Last-In-Id
- field is copied from the Last-In-Id field on transmission. On
- reception, the Last-In-Id field may be compared with the Out-
- Identifier-Ctr to determine how many, if any, outbound Link-
- Quality-Reports have been lost.
-
- V
-
- The V field is 1 bit and indicates whether or not the Measurements
- section of this Link-Quality-Report is valid. The V field is
- copied from the Measurements-Valid state variable on transmission.
- If the V field is not set to 1, then the In-Tx-LQRs, Last-In-Id,
- In-Tx-Packets, In-Tx-Octets, In-Rx-Packets and In-Rx-Octets fields
- should be ignored.
-
- Reserved
-
- The Reserved field is 15 bits and is intended to pad the remaining
-
-
-
-Perkins & Hobby [Page 23]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- packet fields to even four-octet boundaries for the convenience of
- hardware implementations. The Reserved field should always be
- transmitted as zero and ignored on reception.
-
- In-Tx-Packets
-
- The In-Tx-Packets field is four octets and indicates the number of
- packets transmitted on the inbound link of the Link-Quality-Report
- transmitter during the last measured period. The In-Tx-Packets
- field is copied from the In-Tx-Packets state variable on
- transmission.
-
- In-Tx-Octets
-
- The In-Tx-Octets field is four octets and indicates the number of
- octets transmitted on the inbound link of the Link-Quality-Report
- transmitter during the last measured period. The In-Tx-Octets
- field is copied from the In-Tx-Octets state variable on
- transmission.
-
- In-Rx-Packets
-
- The In-Rx-Packets field is four octets and indicates the number of
- packets received on the inbound link of the Link-Quality-Report
- transmitter during the last measured period. The In-Rx-Packets
- field is copied from the In-Rx-Packets state variable on
- transmission.
-
- In-Rx-Octets
-
- The In-Rx-Octets field is four octets and indicates the number of
- octets received on the inbound link of the Link-Quality-Report
- transmitter during the last measured period. The In-Rx-Octets
- field is copied from the In-Rx-Octets state variable on
- transmission.
-
- Out-Tx-Packets
-
- The Out-Tx-Packets field is four octets and is used to calculate
- the number of packets transmitted on the outbound link of the
- Link-Quality-Report transmitter during a period. The Out-Tx-
- Packets field is copied from the Out-Tx-Packets-Ctr counter on
- transmission.
-
- Out-Tx-Octets
-
- The Out-Tx-Octets field is four octets and is used to calculate
- the number of octets transmitted on the outbound link of the
-
-
-
-Perkins & Hobby [Page 24]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Link-Quality-Report transmitter during a period. The Out-Tx-
- Octets field is copied from the Out-Tx-Octets-Ctr counter on
- transmission.
-
- In-Rx-Packets
-
- The In-Rx-Packets field is four octets and is used to calculate
- the number of packets received on the inbound link of the Link-
- Quality-Report receiver during a period. The In-Rx-Packets field
- is copied from the In-Rx-Packets-Ctr counter on reception. The
- In-Rx-Packets is not shown because it is not actually transmitted
- over the link. Rather, it is logically appended (in an
- implementation dependent manner) to the packet by the
- implementation's Rx process.
-
- In-Rx-Octets
-
- The In-Rx-Octets field is four octets and is used to calculate the
- number of octets received on the inbound link of the Link-
- Quality-Report receiver during a period. The In-Rx-Octets field
- is copied from the In-Rx-Octets-Ctr counter on reception. The
- In-Rx-Octets is not shown because it is not actually transmitted
- over the link. Rather, it is logically appended (in an
- implementation dependent manner) to the packet by the
- implementation's Rx process.
-
-3.7. Policy Suggestions
-
- Link-Quality-Report packets provide a mechanism to determine the link
- quality, but it is up to each implementation to decide when the link
- is usable. It is recommended that this policy implement some amount
- of hysteresis so that the link does not bounce up and down. A
- particularly good policy is to use a K out of N algorithm. In such
- an algorithm, there must be K successes out of the last N periods for
- the link to be considered of good quality.
-
- Procedures for recovery from poor quality links are unspecified and
- may vary from implementation to implementation. A suggested approach
- is to immediately close all other Network-Layer protocols (i.e.,
- cause IPCP to transmit a Terminate-Req), but to continue transmitting
- Link-Quality-Reports. Once the link quality again reaches an
- acceptable level, Network-Layer protocols can be reconfigured.
-
-3.8. Example
-
- An example may be helpful. Assume that Link-Manager implementation A
- transmits a Link-Quality-Report which is received by Link-Manager
- implementation B at time t0 with the following values:
-
-
-
-Perkins & Hobby [Page 25]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Out-Tx-Packets 5
- Out-Tx-Octets 100
- In-Rx-Packets 3
- In-Rx-Octets 70
-
- Assume that A then transmits 20 IP packets with 200 octets, of which
- 15 packets and 150 octets are received by B. At time t1, A transmits
- another LQR which is received by B as follows:
-
- Out-Tx-Packets 26 (5 old, plus 20 IP, plus 1 LQR)
- Out-Tx-Octets 342 (42 for LQR)
- In-Rx-Packets 19
- In-Rx-Octets 262
-
- Implementation B can now calculate the number of packets and octets
- transmitted, received and lost on its inbound link as follows:
-
- In-Tx-Packets = 26 - 5 = 21
- In-Tx-Octets = 342 - 100 = 242
- In-Rx-Packets = 10 - 3 = 16
- In-Rx-Octets = 262 - 70 = 192
- In-Lost-Packets = 21 - 16 = 5
- In-Lost-Octets = 242 - 192 = 50
-
- After doing these calculations, B evaluates the measurements in what
- ever way its implemented policy specifies. Also, the next time that
- B transmits an LQR to A, it will report these values in the
- Measurements section, thereby allowing A to evaluate these same
- measurements.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 26]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-4. Password Authentication Protocol
-
- The Password Authentication Protocol (PAP) may be used to
- authenticate a peer by verifying the identity of the remote end of
- the link. Use of the PAP must first be negotiated using the LCP
- Authentication-Type Configuration Option. Successful negotiation
- adds an additional Authentication phase to the Link Control Protocol,
- after the Link Quality Determination phase, and before the Network
- Layer Protocol Configuration Negotiation phase. PAP packets received
- before the Authentication phase is reached should be silently
- discarded. The Authentication phase is exited once an Authenticate-
- Ack packet is sent or received.
-
- PAP is intended for use primarily by hosts and routers that connect
- via switched circuits or dial-up lines to a PPP network server. The
- server can then use the identification of the connecting host or
- router in the selection of options for network layer negotiations or
- failing authentication, drop the connection.
-
- Note that PAP is not a strong authentication method. Passwords are
- passed over the circuit in the clear and there is no protection from
- repeated trial and error attacks. Work is currently underway on more
- secure authentication methods for PPP and other protocols. It is
- strongly recommended to switch to these methods when they become
- available.
-
-
-4.1. Packet Format
-
- Exactly one Password Authentication Protocol packet is encapsulated
- in the Information field of PPP Data Link Layer frames where the
- protocol field indicates type hex c023 (Password Authentication
- Protocol). A summary of the Password Authentication Protocol packet
- format is shown below. The fields are transmitted from left to
- right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Code
-
- The Code field is one octet and identifies the type of PAP packet.
- PAP Codes are assigned as follows:
-
-
-
-Perkins & Hobby [Page 27]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- 1 Authenticate
- 2 Authenticate-Ack
- 3 Authenticate-Nak
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies.
-
- Length
-
- The Length field is two octets and indicates the length of the PAP
- packet including the Code, Identifier, Length and Data fields.
- Octets outside the range of the Length field should be treated as
- Data Link Layer padding and should be ignored on reception.
-
- Data
-
- The Data field is zero or more octets. The format of the Data
- field is determined by the Code field.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 28]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-4.2. Authenticate
-
- Description
-
- The Authenticate packet is used to begin the Password
- Authentication Protocol. An implementation having sent a LCP
- Configure-Ack packet with an Authentication-Type Configuration
- Option further specifying the Password Authentication Protocol
- must send an Authenticate packet during the Authentication phase.
- An implementation receiving a Configure-Ack with said
- Configuration Option should expect the remote end to send an
- Authenticate packet during this phase.
-
- An Authenticate packet is sent with the Code field set to 1
- (Authenticate) and the Peer-ID and Password fields filled as
- desired.
-
- Upon reception of an Authenticate, some type of Authenticate reply
- MUST be transmitted.
-
- A summary of the Authenticate packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer-ID Length| Peer-Id ...
- +-+-+-+-+-+-+-+-+-+-+-+-+
- | Passwd-Length | Password ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Code
-
- 1 for Authenticate.
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies. The Identifier field should be changed each time a
- Authenticate is transmitted which is different from the preceding
- request.
-
- Peer-ID-Length
-
- The Peer-ID-Length field is one octet and indicates the length of
- the Peer-ID field
-
-
-
-Perkins & Hobby [Page 29]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Peer-ID
-
- The Peer-ID field is zero or more octets and indicates the name of
- the peer to be authenticated.
-
- Passwd-Length
-
- The Passwd-Length field is one octet and indicates the length of
- the Password field
-
- Password
-
- The Password field is zero or more octets and indicates the
- password to be used for authentication.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 30]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-4.3. Authenticate-Ack
-
- Description
-
- If the Peer-ID/Password pair received in an Authenticate is both
- recognizable and acceptable, then a PAP implementation should
- transmit a PAP packet with the Code field set to 2 (Authenticate-
- Ack), the Identifier field copied from the received Authenticate,
- and the Message field optionally filled with an ASCII message.
-
- A summary of the Authenticate-Ack packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Msg-Length | Message ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 2 for Authenticate-Ack.
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies. The Identifier field MUST be copied from the
- Identifier field of the Authenticate which caused this
- Authenticate-Ack.
-
- Msg-Length
-
- The Msg-Length field is one octet and indicates the length of the
- Message field
-
- Message
-
- The Message field is zero or more octets and indicates an ASCII
- message.
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 31]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-4.4. Authenticate-Nak
-
- Description
-
- If the Peer-ID/Password pair received in a Authenticate is not
- recognizable or acceptable, then a PAP implementation should
- transmit a PAP packet with the Code field set to 3 (Authenticate-
- Nak), the Identifier field copied from the received Authenticate,
- and the Message field optionally filled with an ASCII message.
-
- A summary of the Authenticate-Nak packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Msg-Length | Message ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 3 for Authenticate-Nak.
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies. The Identifier field MUST be copied from the
- Identifier field of the Authenticate which caused this
- Authenticate-Nak.
-
- Msg-Length
-
- The Msg-Length field is one octet and indicates the length of the
- Message field
-
- Message
-
- The Message field is zero or more octets and indicates an ASCII
- message.
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 32]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-5. IP Control Protocol (IPCP) Configuration Options
-
-IPCP Configuration Options allow negotiatiation of desirable Internet
-Protocol parameters. Negotiable modifications proposed in this document
-include IP addresses and compression protocols.
-
-The initial proposed values for the IPCP Configuration Option Type field
-(see [1]) are assigned as follows:
-
- 1 IP-Addresses
- 2 Compression-Type
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 33]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-5.1. IP-Addresses
-
- Description
-
- This Configuration Option provides a way to negotiate the IP
- addresses to be used on each end of the link. By default, no IP
- addresses are assigned to either end. An address specified as
- zero shall be interpreted as requesting the remote end to specify
- the address. If an implementation allows the assignment of
- multiple IP addresses, then it may include multiple IP Address
- Configuration Options in its Configure-Request packets. An
- implementation receiving a Configure-Request specifying multiple
- IP Address Configuration Options may send a Configure-Reject
- specifying one or more of the specified IP Addresses. An
- implementation which desires that no IP addresses be assigned
- (such as a "half-gateway") may reject all IP Address Configuration
- Options.
-
- A summary of the IP-Addresses Configuration Option format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Source-IP-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Source-IP-Address (cont) | Destination-IP-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Destination-IP-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 1
-
- Length
-
- 10
-
- Source-IP-Address
-
- The four octet Source-IP-Address is the desired local address of
- the sender of a Configure-Request. In a Configure-Ack,
- Configure-Nak or Configure-Reject, the Source-IP-Address is the
- remote address of the sender, and is thus a local address with
- respect to the Configuration Option receiver.
-
-
-
-
-
-Perkins & Hobby [Page 34]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Destination-IP-Address
-
- The four octet Destination-IP-Address is the remote address with
- respect to the sender of a Configure-Request. In a Configure-Ack,
- Configure-Nak or Configure-Reject, the Destination-IP-Address is
- the local address of the sender, and is thus a remote address with
- respect to the Configuration Option receiver.
-
- Default
-
- No IP addresses assigned.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 35]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-5.2. Compression-Type
-
- Description
-
- This Configuration Option provides a way to negotiate the use of a
- specific compression protocol. By default, compression is not
- enabled.
-
- A summary of the Compression-Type Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Compression-Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Type
-
- 2
-
- Length
-
- >= 4
-
- Compression-Type
-
- The Compression-Type field is two octets and indicates the type of
- compression protocol desired. Values for the Compression-Type are
- always the same as the PPP Data Link Layer Protocol field values
- for that same compression protocol. The most up-to-date values of
- the Compression-Type field are specified in "Assigned Numbers"
- [2]. Initial values are assigned as follows:
-
- Value (in hex) Protocol
-
- 0037 Van Jacobson Compressed TCP/IP
-
- Data
-
- The Data field is zero or more octets and contains additional data
- as determined by the compression protocol indicated in the
- Compression-Type field.
-
-
-
-
-
-
-Perkins & Hobby [Page 36]
-
-RFC 1172 PPP Initial Options July 1990
-
-
- Default
-
- No compression protocol enabled.
-
-
-References
-
- [1] Perkins, D., "The Point-to-Point Protocol for the Transmission
- of Multi-Protocol of Datagrams Over Point-to-Point Links", RFC
- 1171, July, 1990.
-
- [2] Reynolds, J., and J. Postel, "Assigned Numbers", RFC 1060,
- USC/Information Sciences Institute, March 1990.
-
-
-Security Considerations
-
- Security issues are discussed in Section 2.3.
-
-
-Author's Address
-
- This proposal is the product of the Point-to-Point Protocol Working
- Group of the Internet Engineering Task Force (IETF). The working
- group can be contacted via the chair:
-
- Russ Hobby
- UC Davis
- Computing Services
- Davis, CA 95616
-
- Phone: (916) 752-0236
-
- EMail: rdhobby@ucdavis.edu
-
- Questions about this memo can also be directed to:
-
- Drew D. Perkins
- Carnegie Mellon University
- Networking and Communications
- Pittsburgh, PA 15213
-
- Phone: (412) 268-8576
-
- EMail: ddp@andrew.cmu.edu
-
-
-
-
-
-
-Perkins & Hobby [Page 37]
-
-RFC 1172 PPP Initial Options July 1990
-
-
-Acknowledgments
-
- Many people spent significant time helping to develop the Point-to-
- Point Protocol. The complete list of people is too numerous to list,
- but the following people deserve special thanks: Ken Adelman (TGV),
- Craig Fox (NSC), Phill Gross (NRI), Russ Hobby (UC Davis), David
- Kaufman (Proteon), John LoVerso (Xylogics), Bill Melohn (Sun
- Microsystems), Mike Patton (MIT), Drew Perkins (CMU), Greg Satz
- (cisco systems) and Asher Waldfogel (Wellfleet).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Perkins & Hobby [Page 38]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/rfc1332.txt b/doc/rfc1332.txt
deleted file mode 100644
index 3e12042..0000000
--- a/doc/rfc1332.txt
+++ /dev/null
@@ -1,787 +0,0 @@
-
-
-
-
-
-
-Network Working Group G. McGregor
-Request for Comments: 1332 Merit
-Obsoletes: RFC 1172 May 1992
-
-
-
- The PPP Internet Protocol Control Protocol (IPCP)
-
-
-
-Status of this Memo
-
- This RFC specifies an IAB standards track protocol for the Internet
- community, and requests discussion and suggestions for improvements.
- Please refer to the current edition of the "IAB Official Protocol
- Standards" for the standardization state and status of this protocol.
- Distribution of this memo is unlimited.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method of
- encapsulating Network Layer protocol information over point-to-point
- links. PPP also defines an extensible Link Control Protocol, and
- proposes a family of Network Control Protocols (NCPs) for
- establishing and configuring different network-layer protocols.
-
- This document defines the NCP for establishing and configuring the
- Internet Protocol [2] over PPP, and a method to negotiate and use Van
- Jacobson TCP/IP header compression [3] with PPP.
-
- This RFC is a product of the Point-to-Point Protocol Working Group of
- the Internet Engineering Task Force (IETF).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-McGregor [Page i]
-
-RFC 1332 PPP IPCP May 1992
-
-
-Table of Contents
-
-
- 1. Introduction .......................................... 1
-
- 2. A PPP Network Control Protocol (NCP) for IP ........... 2
- 2.1 Sending IP Datagrams ............................ 2
-
- 3. IPCP Configuration Options ............................ 4
- 3.1 IP-Addresses .................................... 5
- 3.2 IP-Compression-Protocol ......................... 6
- 3.3 IP-Address ...................................... 8
-
- 4. Van Jacobson TCP/IP header compression ................ 9
- 4.1 Configuration Option Format ..................... 9
-
- APPENDICES ................................................... 11
-
- A. IPCP Recommended Options .............................. 11
-
- SECURITY CONSIDERATIONS ...................................... 11
-
- REFERENCES ................................................... 11
-
- ACKNOWLEDGEMENTS ............................................. 11
-
- CHAIR'S ADDRESS .............................................. 12
-
- AUTHOR'S ADDRESS ............................................. 12
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-McGregor [Page ii]
-
-RFC 1332 PPP IPCP May 1992
-
-
-1. Introduction
-
- PPP has three main components:
-
- 1. A method for encapsulating datagrams over serial links.
-
- 2. A Link Control Protocol (LCP) for establishing, configuring,
- and testing the data-link connection.
-
- 3. A family of Network Control Protocols (NCPs) for establishing
- and configuring different network-layer protocols.
-
- In order to establish communications over a point-to-point link, each
- end of the PPP link must first send LCP packets to configure and test
- the data link. After the link has been established and optional
- facilities have been negotiated as needed by the LCP, PPP must send
- NCP packets to choose and configure one or more network-layer
- protocols. Once each of the chosen network-layer protocols has been
- configured, datagrams from each network-layer protocol can be sent
- over the link.
-
- The link will remain configured for communications until explicit LCP
- or NCP packets close the link down, or until some external event
- occurs (an inactivity timer expires or network administrator
- intervention).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-McGregor [Page 1]
-
-RFC 1332 PPP IPCP May 1992
-
-
-2. A PPP Network Control Protocol (NCP) for IP
-
- The IP Control Protocol (IPCP) is responsible for configuring,
- enabling, and disabling the IP protocol modules on both ends of the
- point-to-point link. IPCP uses the same packet exchange machanism as
- the Link Control Protocol (LCP). IPCP packets may not be exchanged
- until PPP has reached the Network-Layer Protocol phase. IPCP packets
- received before this phase is reached should be silently discarded.
-
- The IP Control Protocol is exactly the same as the Link Control
- Protocol [1] with the following exceptions:
-
- Data Link Layer Protocol Field
-
- Exactly one IPCP packet is encapsulated in the Information field
- of PPP Data Link Layer frames where the Protocol field indicates
- type hex 8021 (IP Control Protocol).
-
- Code field
-
- Only Codes 1 through 7 (Configure-Request, Configure-Ack,
- Configure-Nak, Configure-Reject, Terminate-Request, Terminate-Ack
- and Code-Reject) are used. Other Codes should be treated as
- unrecognized and should result in Code-Rejects.
-
- Timeouts
-
- IPCP packets may not be exchanged until PPP has reached the
- Network-Layer Protocol phase. An implementation should be
- prepared to wait for Authentication and Link Quality Determination
- to finish before timing out waiting for a Configure-Ack or other
- response. It is suggested that an implementation give up only
- after user intervention or a configurable amount of time.
-
- Configuration Option Types
-
- IPCP has a distinct set of Configuration Options, which are
- defined below.
-
-2.1. Sending IP Datagrams
-
- Before any IP packets may be communicated, PPP must reach the
- Network-Layer Protocol phase, and the IP Control Protocol must reach
- the Opened state.
-
- Exactly one IP packet is encapsulated in the Information field of PPP
- Data Link Layer frames where the Protocol field indicates type hex
- 0021 (Internet Protocol).
-
-
-
-McGregor [Page 2]
-
-RFC 1332 PPP IPCP May 1992
-
-
- The maximum length of an IP packet transmitted over a PPP link is the
- same as the maximum length of the Information field of a PPP data
- link layer frame. Larger IP datagrams must be fragmented as
- necessary. If a system wishes to avoid fragmentation and reassembly,
- it should use the TCP Maximum Segment Size option [4], and MTU
- discovery [5].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-McGregor [Page 3]
-
-RFC 1332 PPP IPCP May 1992
-
-
-3. IPCP Configuration Options
-
-IPCP Configuration Options allow negotiatiation of desirable Internet
-Protocol parameters. IPCP uses the same Configuration Option format
-defined for LCP [1], with a separate set of Options.
-
-The most up-to-date values of the IPCP Option Type field are specified
-in the most recent "Assigned Numbers" RFC [6]. Current values are
-assigned as follows:
-
- 1 IP-Addresses
- 2 IP-Compression-Protocol
- 3 IP-Address
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-McGregor [Page 4]
-
-RFC 1332 PPP IPCP May 1992
-
-
-3.1. IP-Addresses
-
- Description
-
- The use of the Configuration Option IP-Addresses has been
- deprecated. It has been determined through implementation
- experience that it is difficult to ensure negotiation convergence
- in all cases using this option. RFC 1172 [7] provides information
- for implementations requiring backwards compatability. The IP-
- Address Configuration Option replaces this option, and its use is
- preferred.
-
- This option SHOULD NOT be sent in a Configure-Request if a
- Configure-Request has been received which includes either an IP-
- Addresses or IP-Address option. This option MAY be sent if a
- Configure-Reject is received for the IP-Address option, or a
- Configure-Nak is received with an IP-Addresses option as an
- appended option.
-
- Support for this option MAY be removed after the IPCP protocol
- status advances to Internet Draft Standard.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-McGregor [Page 5]
-
-RFC 1332 PPP IPCP May 1992
-
-
-3.2. IP-Compression-Protocol
-
- Description
-
- This Configuration Option provides a way to negotiate the use of a
- specific compression protocol. By default, compression is not
- enabled.
-
- A summary of the IP-Compression-Protocol Configuration Option format
- is shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | IP-Compression-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Type
-
- 2
-
- Length
-
- >= 4
-
- IP-Compression-Protocol
-
- The IP-Compression-Protocol field is two octets and indicates the
- compression protocol desired. Values for this field are always
- the same as the PPP Data Link Layer Protocol field values for that
- same compression protocol.
-
- The most up-to-date values of the IP-Compression-Protocol field
- are specified in the most recent "Assigned Numbers" RFC [6].
- Current values are assigned as follows:
-
- Value (in hex) Protocol
-
- 002d Van Jacobson Compressed TCP/IP
-
- Data
-
- The Data field is zero or more octets and contains additional data
- as determined by the particular compression protocol.
-
-
-
-
-
-McGregor [Page 6]
-
-RFC 1332 PPP IPCP May 1992
-
-
- Default
-
- No compression protocol enabled.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-McGregor [Page 7]
-
-RFC 1332 PPP IPCP May 1992
-
-
-3.3. IP-Address
-
- Description
-
- This Configuration Option provides a way to negotiate the IP
- address to be used on the local end of the link. It allows the
- sender of the Configure-Request to state which IP-address is
- desired, or to request that the peer provide the information. The
- peer can provide this information by NAKing the option, and
- returning a valid IP-address.
-
- If negotiation about the remote IP-address is required, and the
- peer did not provide the option in its Configure-Request, the
- option SHOULD be appended to a Configure-Nak. The value of the
- IP-address given must be acceptable as the remote IP-address, or
- indicate a request that the peer provide the information.
-
- By default, no IP address is assigned.
-
- A summary of the IP-Address Configuration Option format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | IP-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- IP-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 3
-
- Length
-
- 6
-
- IP-Address
-
- The four octet IP-Address is the desired local address of the
- sender of a Configure-Request. If all four octets are set to
- zero, it indicates a request that the peer provide the IP-Address
- information.
-
- Default
-
- No IP address is assigned.
-
-
-
-McGregor [Page 8]
-
-RFC 1332 PPP IPCP May 1992
-
-
-4. Van Jacobson TCP/IP header compression
-
-Van Jacobson TCP/IP header compression reduces the size of the TCP/IP
-headers to as few as three bytes. This can be a significant improvement
-on slow serial lines, particularly for interactive traffic.
-
-The IP-Compression-Protocol Configuration Option is used to indicate the
-ability to receive compressed packets. Each end of the link must
-separately request this option if bi-directional compression is desired.
-
-The PPP Protocol field is set to the following values when transmitting
-IP packets:
-
- Value (in hex)
-
- 0021 Type IP. The IP protocol is not TCP, or the packet is a
- fragment, or cannot be compressed.
-
- 002d Compressed TCP. The TCP/IP headers are replaced by the
- compressed header.
-
- 002f Uncompressed TCP. The IP protocol field is replaced by
- the slot identifier.
-
-4.1. Configuration Option Format
-
- A summary of the IP-Compression-Protocol Configuration Option format
- to negotiate Van Jacobson TCP/IP header compression is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | IP-Compression-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Max-Slot-Id | Comp-Slot-Id |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 2
-
- Length
-
- 6
-
-
-
-
-
-
-McGregor [Page 9]
-
-RFC 1332 PPP IPCP May 1992
-
-
- IP-Compression-Protocol
-
- 002d (hex) for Van Jacobson Compressed TCP/IP headers.
-
- Max-Slot-Id
-
- The Max-Slot-Id field is one octet and indicates the maximum slot
- identifier. This is one less than the actual number of slots; the
- slot identifier has values from zero to Max-Slot-Id.
-
- Note: There may be implementations that have problems with only
- one slot (Max-Slot-Id = 0). See the discussion in reference
- [3]. The example implementation in [3] will only work with 3
- through 254 slots.
-
- Comp-Slot-Id
-
- The Comp-Slot-Id field is one octet and indicates whether the slot
- identifier field may be compressed.
-
- 0 The slot identifier must not be compressed. All compressed
- TCP packets must set the C bit in every change mask, and
- must include the slot identifier.
-
- 1 The slot identifer may be compressed.
-
- The slot identifier must not be compressed if there is no ability
- for the PPP link level to indicate an error in reception to the
- decompression module. Synchronization after errors depends on
- receiving a packet with the slot identifier. See the discussion
- in reference [3].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-McGregor [Page 10]
-
-RFC 1332 PPP IPCP May 1992
-
-
-A. IPCP Recommended Options
-
- The following Configurations Options are recommended:
-
- IP-Compression-Protocol -- with at least 4 slots, usually 16
- slots.
-
- IP-Address -- only on dial-up lines.
-
-
-Security Considerations
-
- Security issues are not discussed in this memo.
-
-
-References
-
- [1] Simpson, W., "The Point-to-Point Protocol", RFC 1331, May 1992.
-
- [2] Postel, J., "Internet Protocol", RFC 791, USC/Information
- Sciences Institute, September 1981.
-
- [3] Jacobson, V., "Compressing TCP/IP Headers", RFC 1144, January
- 1990.
-
- [4] Postel, J., "The TCP Maximum Segment Size Option and Related
- Topics", RFC 879, USC/Information Sciences Institute, November
- 1983.
-
- [5] Mogul, J., and S. Deering, "Path MTU Discovery", RFC 1191,
- November 1990.
-
- [6] Reynolds, J., and J. Postel, "Assigned Numbers", RFC 1060,
- USC/Information Sciences Institute, March 1990.
-
- [7] Perkins, D., and R. Hobby, "Point-to-Point Protocol (PPP)
- initial configuration options", RFC 1172, August 1990.
-
-
-Acknowledgments
-
- Some of the text in this document is taken from RFCs 1171 & 1172, by
- Drew Perkins of Carnegie Mellon University, and by Russ Hobby of the
- University of California at Davis.
-
- Information leading to the expanded IP-Compression option provided by
- Van Jacobson at SIGCOMM '90.
-
-
-
-
-McGregor [Page 11]
-
-RFC 1332 PPP IPCP May 1992
-
-
- Bill Simpson helped with the document formatting.
-
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Brian Lloyd
- Lloyd & Associates
- 3420 Sudbury Road
- Cameron Park, California 95682
-
- Phone: (916) 676-1147
-
- EMail: brian@ray.lloyd.com
-
-
-
-Author's Address
-
- Questions about this memo can also be directed to:
-
- Glenn McGregor
- Merit Network, Inc.
- 1071 Beal Avenue
- Ann Arbor, MI 48109-2103
-
- Phone: (313) 763-1203
-
- EMail: Glenn.McGregor@Merit.edu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-McGregor [Page 12]
-
diff --git a/doc/rfc1334.txt b/doc/rfc1334.txt
deleted file mode 100644
index 6051f48..0000000
--- a/doc/rfc1334.txt
+++ /dev/null
@@ -1,899 +0,0 @@
-
-
-
-
-
-
-Network Working Group B. Lloyd
-Request for Comments: 1334 L&A
- W. Simpson
- Daydreamer
- October 1992
-
-
- PPP Authentication Protocols
-
-Status of this Memo
-
- This RFC specifies an IAB standards track protocol for the Internet
- community, and requests discussion and suggestions for improvements.
- Please refer to the current edition of the "IAB Official Protocol
- Standards" for the standardization state and status of this protocol.
- Distribution of this memo is unlimited.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method of
- encapsulating Network Layer protocol information over point-to-point
- links. PPP also defines an extensible Link Control Protocol, which
- allows negotiation of an Authentication Protocol for authenticating
- its peer before allowing Network Layer protocols to transmit over the
- link.
-
- This document defines two protocols for Authentication: the Password
- Authentication Protocol and the Challenge-Handshake Authentication
- Protocol. This memo is the product of the Point-to-Point Protocol
- Working Group of the Internet Engineering Task Force (IETF).
- Comments on this memo should be submitted to the ietf-ppp@ucdavis.edu
- mailing list.
-
-Table of Contents
-
- 1. Introduction ............................................... 2
- 1.1 Specification Requirements ................................. 2
- 1.2 Terminology ................................................ 3
- 2. Password Authentication Protocol ............................ 3
- 2.1 Configuration Option Format ................................ 4
- 2.2 Packet Format .............................................. 5
- 2.2.1 Authenticate-Request ..................................... 5
- 2.2.2 Authenticate-Ack and Authenticate-Nak .................... 7
- 3. Challenge-Handshake Authentication Protocol.................. 8
- 3.1 Configuration Option Format ................................ 9
- 3.2 Packet Format .............................................. 10
- 3.2.1 Challenge and Response ................................... 11
- 3.2.2 Success and Failure ...................................... 13
-
-
-
-Lloyd & Simpson [Page 1]
-
-RFC 1334 PPP Authentication October 1992
-
-
- SECURITY CONSIDERATIONS ........................................ 14
- REFERENCES ..................................................... 15
- ACKNOWLEDGEMENTS ............................................... 16
- CHAIR'S ADDRESS ................................................ 16
- AUTHOR'S ADDRESS ............................................... 16
-
-1. Introduction
-
- PPP has three main components:
-
- 1. A method for encapsulating datagrams over serial links.
-
- 2. A Link Control Protocol (LCP) for establishing, configuring,
- and testing the data-link connection.
-
- 3. A family of Network Control Protocols (NCPs) for establishing
- and configuring different network-layer protocols.
-
- In order to establish communications over a point-to-point link, each
- end of the PPP link must first send LCP packets to configure the data
- link during Link Establishment phase. After the link has been
- established, PPP provides for an optional Authentication phase before
- proceeding to the Network-Layer Protocol phase.
-
- By default, authentication is not mandatory. If authentication of
- the link is desired, an implementation MUST specify the
- Authentication-Protocol Configuration Option during Link
- Establishment phase.
-
- These authentication protocols are intended for use primarily by
- hosts and routers that connect to a PPP network server via switched
- circuits or dial-up lines, but might be applied to dedicated links as
- well. The server can use the identification of the connecting host
- or router in the selection of options for network layer negotiations.
-
- This document defines the PPP authentication protocols. The Link
- Establishment and Authentication phases, and the Authentication-
- Protocol Configuration Option, are defined in The Point-to-Point
- Protocol (PPP) [1].
-
-1.1. Specification Requirements
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized.
-
- MUST
- This word, or the adjective "required", means that the definition
- is an absolute requirement of the specification.
-
-
-
-Lloyd & Simpson [Page 2]
-
-RFC 1334 PPP Authentication October 1992
-
-
- MUST NOT
- This phrase means that the definition is an absolute prohibition
- of the specification.
-
- SHOULD
- This word, or the adjective "recommended", means that there may
- exist valid reasons in particular circumstances to ignore this
- item, but the full implications should be understood and carefully
- weighed before choosing a different course.
-
- MAY
- This word, or the adjective "optional", means that this item is
- one of an allowed set of alternatives. An implementation which
- does not include this option MUST be prepared to interoperate with
- another implementation which does include the option.
-
-1.2. Terminology
-
- This document frequently uses the following terms:
-
- authenticator
- The end of the link requiring the authentication. The
- authenticator specifies the authentication protocol to be used in
- the Configure-Request during Link Establishment phase.
-
- peer
- The other end of the point-to-point link; the end which is being
- authenticated by the authenticator.
-
- silently discard
- This means the implementation discards the packet without further
- processing. The implementation SHOULD provide the capability of
- logging the error, including the contents of the silently
- discarded packet, and SHOULD record the event in a statistics
- counter.
-
-2. Password Authentication Protocol
-
- The Password Authentication Protocol (PAP) provides a simple method
- for the peer to establish its identity using a 2-way handshake. This
- is done only upon initial link establishment.
-
- After the Link Establishment phase is complete, an Id/Password pair
- is repeatedly sent by the peer to the authenticator until
- authentication is acknowledged or the connection is terminated.
-
- PAP is not a strong authentication method. Passwords are sent over
- the circuit "in the clear", and there is no protection from playback
-
-
-
-Lloyd & Simpson [Page 3]
-
-RFC 1334 PPP Authentication October 1992
-
-
- or repeated trial and error attacks. The peer is in control of the
- frequency and timing of the attempts.
-
- Any implementations which include a stronger authentication method
- (such as CHAP, described below) MUST offer to negotiate that method
- prior to PAP.
-
- This authentication method is most appropriately used where a
- plaintext password must be available to simulate a login at a remote
- host. In such use, this method provides a similar level of security
- to the usual user login at the remote host.
-
- Implementation Note: It is possible to limit the exposure of the
- plaintext password to transmission over the PPP link, and avoid
- sending the plaintext password over the entire network. When the
- remote host password is kept as a one-way transformed value, and
- the algorithm for the transform function is implemented in the
- local server, the plaintext password SHOULD be locally transformed
- before comparison with the transformed password from the remote
- host.
-
-2.1. Configuration Option Format
-
- A summary of the Authentication-Protocol Configuration Option format
- to negotiate the Password Authentication Protocol is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Authentication-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 3
-
- Length
-
- 4
-
- Authentication-Protocol
-
- c023 (hex) for Password Authentication Protocol.
-
- Data
-
- There is no Data field.
-
-
-
-Lloyd & Simpson [Page 4]
-
-RFC 1334 PPP Authentication October 1992
-
-
-2.2. Packet Format
-
- Exactly one Password Authentication Protocol packet is encapsulated
- in the Information field of a PPP Data Link Layer frame where the
- protocol field indicates type hex c023 (Password Authentication
- Protocol). A summary of the PAP packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Code
-
- The Code field is one octet and identifies the type of PAP packet.
- PAP Codes are assigned as follows:
-
- 1 Authenticate-Request
- 2 Authenticate-Ack
- 3 Authenticate-Nak
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies.
-
- Length
-
- The Length field is two octets and indicates the length of the PAP
- packet including the Code, Identifier, Length and Data fields.
- Octets outside the range of the Length field should be treated as
- Data Link Layer padding and should be ignored on reception.
-
- Data
-
- The Data field is zero or more octets. The format of the Data
- field is determined by the Code field.
-
-2.2.1. Authenticate-Request
-
- Description
-
- The Authenticate-Request packet is used to begin the Password
- Authentication Protocol. The link peer MUST transmit a PAP packet
-
-
-
-Lloyd & Simpson [Page 5]
-
-RFC 1334 PPP Authentication October 1992
-
-
- with the Code field set to 1 (Authenticate-Request) during the
- Authentication phase. The Authenticate-Request packet MUST be
- repeated until a valid reply packet is received, or an optional
- retry counter expires.
-
- The authenticator SHOULD expect the peer to send an Authenticate-
- Request packet. Upon reception of an Authenticate-Request packet,
- some type of Authenticate reply (described below) MUST be
- returned.
-
- Implementation Note: Because the Authenticate-Ack might be
- lost, the authenticator MUST allow repeated Authenticate-
- Request packets after completing the Authentication phase.
- Protocol phase MUST return the same reply Code returned when
- the Authentication phase completed (the message portion MAY be
- different). Any Authenticate-Request packets received during
- any other phase MUST be silently discarded.
-
- When the Authenticate-Nak is lost, and the authenticator
- terminates the link, the LCP Terminate-Request and Terminate-
- Ack provide an alternative indication that authentication
- failed.
-
- A summary of the Authenticate-Request packet format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer-ID Length| Peer-Id ...
- +-+-+-+-+-+-+-+-+-+-+-+-+
- | Passwd-Length | Password ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Code
-
- 1 for Authenticate-Request.
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies. The Identifier field MUST be changed each time an
- Authenticate-Request packet is issued.
-
-
-
-
-
-
-Lloyd & Simpson [Page 6]
-
-RFC 1334 PPP Authentication October 1992
-
-
- Peer-ID-Length
-
- The Peer-ID-Length field is one octet and indicates the length of
- the Peer-ID field.
-
- Peer-ID
-
- The Peer-ID field is zero or more octets and indicates the name of
- the peer to be authenticated.
-
- Passwd-Length
-
- The Passwd-Length field is one octet and indicates the length of
- the Password field.
-
- Password
-
- The Password field is zero or more octets and indicates the
- password to be used for authentication.
-
-2.2.2. Authenticate-Ack and Authenticate-Nak
-
- Description
-
- If the Peer-ID/Password pair received in an Authenticate-Request
- is both recognizable and acceptable, then the authenticator MUST
- transmit a PAP packet with the Code field set to 2 (Authenticate-
- Ack).
-
- If the Peer-ID/Password pair received in a Authenticate-Request is
- not recognizable or acceptable, then the authenticator MUST
- transmit a PAP packet with the Code field set to 3 (Authenticate-
- Nak), and SHOULD take action to terminate the link.
-
- A summary of the Authenticate-Ack and Authenticate-Nak packet format
- is shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Msg-Length | Message ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 2 for Authenticate-Ack;
-
-
-
-Lloyd & Simpson [Page 7]
-
-RFC 1334 PPP Authentication October 1992
-
-
- 3 for Authenticate-Nak.
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies. The Identifier field MUST be copied from the
- Identifier field of the Authenticate-Request which caused this
- reply.
-
- Msg-Length
-
- The Msg-Length field is one octet and indicates the length of the
- Message field.
-
- Message
-
- The Message field is zero or more octets, and its contents are
- implementation dependent. It is intended to be human readable,
- and MUST NOT affect operation of the protocol. It is recommended
- that the message contain displayable ASCII characters 32 through
- 126 decimal. Mechanisms for extension to other character sets are
- the topic of future research.
-
-3. Challenge-Handshake Authentication Protocol
-
- The Challenge-Handshake Authentication Protocol (CHAP) is used to
- periodically verify the identity of the peer using a 3-way handshake.
- This is done upon initial link establishment, and MAY be repeated
- anytime after the link has been established.
-
- After the Link Establishment phase is complete, the authenticator
- sends a "challenge" message to the peer. The peer responds with a
- value calculated using a "one-way hash" function. The authenticator
- checks the response against its own calculation of the expected hash
- value. If the values match, the authentication is acknowledged;
- otherwise the connection SHOULD be terminated.
-
- CHAP provides protection against playback attack through the use of
- an incrementally changing identifier and a variable challenge value.
- The use of repeated challenges is intended to limit the time of
- exposure to any single attack. The authenticator is in control of
- the frequency and timing of the challenges.
-
- This authentication method depends upon a "secret" known only to the
- authenticator and that peer. The secret is not sent over the link.
- This method is most likely used where the same secret is easily
- accessed from both ends of the link.
-
-
-
-
-Lloyd & Simpson [Page 8]
-
-RFC 1334 PPP Authentication October 1992
-
-
- Implementation Note: CHAP requires that the secret be available in
- plaintext form. To avoid sending the secret over other links in
- the network, it is recommended that the challenge and response
- values be examined at a central server, rather than each network
- access server. Otherwise, the secret SHOULD be sent to such
- servers in a reversably encrypted form.
-
- The CHAP algorithm requires that the length of the secret MUST be at
- least 1 octet. The secret SHOULD be at least as large and
- unguessable as a well-chosen password. It is preferred that the
- secret be at least the length of the hash value for the hashing
- algorithm chosen (16 octets for MD5). This is to ensure a
- sufficiently large range for the secret to provide protection against
- exhaustive search attacks.
-
- The one-way hash algorithm is chosen such that it is computationally
- infeasible to determine the secret from the known challenge and
- response values.
-
- The challenge value SHOULD satisfy two criteria: uniqueness and
- unpredictability. Each challenge value SHOULD be unique, since
- repetition of a challenge value in conjunction with the same secret
- would permit an attacker to reply with a previously intercepted
- response. Since it is expected that the same secret MAY be used to
- authenticate with servers in disparate geographic regions, the
- challenge SHOULD exhibit global and temporal uniqueness. Each
- challenge value SHOULD also be unpredictable, least an attacker trick
- a peer into responding to a predicted future challenge, and then use
- the response to masquerade as that peer to an authenticator.
- Although protocols such as CHAP are incapable of protecting against
- realtime active wiretapping attacks, generation of unique
- unpredictable challenges can protect against a wide range of active
- attacks.
-
- A discussion of sources of uniqueness and probability of divergence
- is included in the Magic-Number Configuration Option [1].
-
-3.1. Configuration Option Format
-
- A summary of the Authentication-Protocol Configuration Option format
- to negotiate the Challenge-Handshake Authentication Protocol is shown
- below. The fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-Lloyd & Simpson [Page 9]
-
-RFC 1334 PPP Authentication October 1992
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Authentication-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Algorithm |
- +-+-+-+-+-+-+-+-+
-
- Type
-
- 3
-
- Length
-
- 5
-
- Authentication-Protocol
-
- c223 (hex) for Challenge-Handshake Authentication Protocol.
-
- Algorithm
-
- The Algorithm field is one octet and indicates the one-way hash
- method to be used. The most up-to-date values of the CHAP
- Algorithm field are specified in the most recent "Assigned
- Numbers" RFC [2]. Current values are assigned as follows:
-
- 0-4 unused (reserved)
- 5 MD5 [3]
-
-3.2. Packet Format
-
- Exactly one Challenge-Handshake Authentication Protocol packet is
- encapsulated in the Information field of a PPP Data Link Layer frame
- where the protocol field indicates type hex c223 (Challenge-Handshake
- Authentication Protocol). A summary of the CHAP packet format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
-
-
-
-
-Lloyd & Simpson [Page 10]
-
-RFC 1334 PPP Authentication October 1992
-
-
- Code
-
- The Code field is one octet and identifies the type of CHAP
- packet. CHAP Codes are assigned as follows:
-
- 1 Challenge
- 2 Response
- 3 Success
- 4 Failure
-
- Identifier
-
- The Identifier field is one octet and aids in matching challenges,
- responses and replies.
-
- Length
-
- The Length field is two octets and indicates the length of the
- CHAP packet including the Code, Identifier, Length and Data
- fields. Octets outside the range of the Length field should be
- treated as Data Link Layer padding and should be ignored on
- reception.
-
- Data
-
- The Data field is zero or more octets. The format of the Data
- field is determined by the Code field.
-
-3.2.1. Challenge and Response
-
- Description
-
- The Challenge packet is used to begin the Challenge-Handshake
- Authentication Protocol. The authenticator MUST transmit a CHAP
- packet with the Code field set to 1 (Challenge). Additional
- Challenge packets MUST be sent until a valid Response packet is
- received, or an optional retry counter expires.
-
- A Challenge packet MAY also be transmitted at any time during the
- Network-Layer Protocol phase to ensure that the connection has not
- been altered.
-
- The peer SHOULD expect Challenge packets during the Authentication
- phase and the Network-Layer Protocol phase. Whenever a Challenge
- packet is received, the peer MUST transmit a CHAP packet with the
- Code field set to 2 (Response).
-
- Whenever a Response packet is received, the authenticator compares
-
-
-
-Lloyd & Simpson [Page 11]
-
-RFC 1334 PPP Authentication October 1992
-
-
- the Response Value with its own calculation of the expected value.
- Based on this comparison, the authenticator MUST send a Success or
- Failure packet (described below).
-
- Implementation Note: Because the Success might be lost, the
- authenticator MUST allow repeated Response packets after
- completing the Authentication phase. To prevent discovery of
- alternative Names and Secrets, any Response packets received
- having the current Challenge Identifier MUST return the same
- reply Code returned when the Authentication phase completed
- (the message portion MAY be different). Any Response packets
- received during any other phase MUST be silently discarded.
-
- When the Failure is lost, and the authenticator terminates the
- link, the LCP Terminate-Request and Terminate-Ack provide an
- alternative indication that authentication failed.
-
- A summary of the Challenge and Response packet format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value-Size | Value ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Name ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Code
-
- 1 for Challenge;
-
- 2 for Response.
-
- Identifier
-
- The Identifier field is one octet. The Identifier field MUST be
- changed each time a Challenge is sent.
-
- The Response Identifier MUST be copied from the Identifier field
- of the Challenge which caused the Response.
-
- Value-Size
-
- This field is one octet and indicates the length of the Value
- field.
-
-
-
-Lloyd & Simpson [Page 12]
-
-RFC 1334 PPP Authentication October 1992
-
-
- Value
-
- The Value field is one or more octets. The most significant octet
- is transmitted first.
-
- The Challenge Value is a variable stream of octets. The
- importance of the uniqueness of the Challenge Value and its
- relationship to the secret is described above. The Challenge
- Value MUST be changed each time a Challenge is sent. The length
- of the Challenge Value depends upon the method used to generate
- the octets, and is independent of the hash algorithm used.
-
- The Response Value is the one-way hash calculated over a stream of
- octets consisting of the Identifier, followed by (concatenated
- with) the "secret", followed by (concatenated with) the Challenge
- Value. The length of the Response Value depends upon the hash
- algorithm used (16 octets for MD5).
-
- Name
-
- The Name field is one or more octets representing the
- identification of the system transmitting the packet. There are
- no limitations on the content of this field. For example, it MAY
- contain ASCII character strings or globally unique identifiers in
- ASN.1 syntax. The Name should not be NUL or CR/LF terminated.
- The size is determined from the Length field.
-
- Since CHAP may be used to authenticate many different systems, the
- content of the name field(s) may be used as a key to locate the
- proper secret in a database of secrets. This also makes it
- possible to support more than one name/secret pair per system.
-
-3.2.2. Success and Failure
-
- Description
-
- If the Value received in a Response is equal to the expected
- value, then the implementation MUST transmit a CHAP packet with
- the Code field set to 3 (Success).
-
- If the Value received in a Response is not equal to the expected
- value, then the implementation MUST transmit a CHAP packet with
- the Code field set to 4 (Failure), and SHOULD take action to
- terminate the link.
-
- A summary of the Success and Failure packet format is shown below.
- The fields are transmitted from left to right.
-
-
-
-
-Lloyd & Simpson [Page 13]
-
-RFC 1334 PPP Authentication October 1992
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Message ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 3 for Success;
-
- 4 for Failure.
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies. The Identifier field MUST be copied from the
- Identifier field of the Response which caused this reply.
-
- Message
-
- The Message field is zero or more octets, and its contents are
- implementation dependent. It is intended to be human readable,
- and MUST NOT affect operation of the protocol. It is recommended
- that the message contain displayable ASCII characters 32 through
- 126 decimal. Mechanisms for extension to other character sets are
- the topic of future research. The size is determined from the
- Length field.
-
-Security Considerations
-
- Security issues are the primary topic of this RFC.
-
- The interaction of the authentication protocols within PPP are
- highly implementation dependent. This is indicated by the use of
- SHOULD throughout the document.
-
- For example, upon failure of authentication, some implementations
- do not terminate the link. Instead, the implementation limits the
- kind of traffic in the Network-Layer Protocols to a filtered
- subset, which in turn allows the user opportunity to update
- secrets or send mail to the network administrator indicating a
- problem.
-
- There is no provision for re-tries of failed authentication.
- However, the LCP state machine can renegotiate the authentication
- protocol at any time, thus allowing a new attempt. It is
-
-
-
-Lloyd & Simpson [Page 14]
-
-RFC 1334 PPP Authentication October 1992
-
-
- recommended that any counters used for authentication failure not
- be reset until after successful authentication, or subsequent
- termination of the failed link.
-
- There is no requirement that authentication be full duplex or that
- the same protocol be used in both directions. It is perfectly
- acceptable for different protocols to be used in each direction.
- This will, of course, depend on the specific protocols negotiated.
-
- In practice, within or associated with each PPP server, there is a
- database which associates "user" names with authentication
- information ("secrets"). It is not anticipated that a particular
- named user would be authenticated by multiple methods. This would
- make the user vulnerable to attacks which negotiate the least
- secure method from among a set (such as PAP rather than CHAP).
- Instead, for each named user there should be an indication of
- exactly one method used to authenticate that user name. If a user
- needs to make use of different authentication method under
- different circumstances, then distinct user names SHOULD be
- employed, each of which identifies exactly one authentication
- method.
-
- Passwords and other secrets should be stored at the respective
- ends such that access to them is as limited as possible. Ideally,
- the secrets should only be accessible to the process requiring
- access in order to perform the authentication.
-
- The secrets should be distributed with a mechanism that limits the
- number of entities that handle (and thus gain knowledge of) the
- secret. Ideally, no unauthorized person should ever gain
- knowledge of the secrets. It is possible to achieve this with
- SNMP Security Protocols [4], but such a mechanism is outside the
- scope of this specification.
-
- Other distribution methods are currently undergoing research and
- experimentation. The SNMP Security document also has an excellent
- overview of threats to network protocols.
-
-References
-
- [1] Simpson, W., "The Point-to-Point Protocol (PPP)", RFC 1331,
- Daydreamer, May 1992.
-
- [2] Reynolds, J., and J. Postel, "Assigned Numbers", RFC 1340,
- USC/Information Sciences Institute, July 1992.
-
-
-
-
-
-
-Lloyd & Simpson [Page 15]
-
-RFC 1334 PPP Authentication October 1992
-
-
- [3] Rivest, R., and S. Dusse, "The MD5 Message-Digest Algorithm", MIT
- Laboratory for Computer Science and RSA Data Security, Inc. RFC
- 1321, April 1992.
-
- [4] Galvin, J., McCloghrie, K., and J. Davin, "SNMP Security
- Protocols", Trusted Information Systems, Inc., Hughes LAN
- Systems, Inc., MIT Laboratory for Computer Science, RFC 1352,
- July 1992.
-
-Acknowledgments
-
- Some of the text in this document is taken from RFC 1172, by Drew
- Perkins of Carnegie Mellon University, and by Russ Hobby of the
- University of California at Davis.
-
- Special thanks to Dave Balenson, Steve Crocker, James Galvin, and
- Steve Kent, for their extensive explanations and suggestions. Now,
- if only we could get them to agree with each other.
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Brian Lloyd
- Lloyd & Associates
- 3420 Sudbury Road
- Cameron Park, California 95682
-
- Phone: (916) 676-1147
-
- EMail: brian@lloyd.com
-
-Author's Address
-
- Questions about this memo can also be directed to:
-
- William Allen Simpson
- Daydreamer
- Computer Systems Consulting Services
- P O Box 6205
- East Lansing, MI 48826-6205
-
- EMail: Bill.Simpson@um.cc.umich.edu
-
-
-
-
-
-
-
-
-Lloyd & Simpson [Page 16]
- \ No newline at end of file
diff --git a/doc/rfc1548.txt b/doc/rfc1548.txt
deleted file mode 100644
index 7b8a33a..0000000
--- a/doc/rfc1548.txt
+++ /dev/null
@@ -1,2971 +0,0 @@
-
-
-
-
-
-
-Network Working Group W. Simpson
-Request for Comments: 1548 Daydreamer
-Obsoletes: RFC 1331 December 1993
-Category: Standards Track
-
-
- The Point-to-Point Protocol (PPP)
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) provides a standard method for
- transporting multi-protocol datagrams over point-to-point links. PPP
- is comprised of three main components:
-
- 1. A method for encapsulating multi-protocol datagrams.
-
- 2. A Link Control Protocol (LCP) for establishing, configuring,
- and testing the data-link connection.
-
- 3. A family of Network Control Protocols (NCPs) for establishing
- and configuring different network-layer protocols.
-
- This document defines the PPP organization and methodology, and the
- PPP encapsulation, together with an extensible option negotiation
- mechanism which is able to negotiate a rich assortment of
- configuration parameters and provides additional management
- functions. The PPP Link Control Protocol (LCP) is described in terms
- of this mechanism.
-
- This document is the product of the Point-to-Point Protocol Working
- Group of the Internet Engineering Task Force (IETF). Comments should
- be submitted to the ietf-ppp@ucdavis.edu mailing list.
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 1]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
-Table of Contents
-
- 1. Introduction ................................................3
- 1.1 Specification of Requirements ...............................4
- 1.2 Terminology .................................................5
- 2. PPP Encapsulation ...........................................5
- 3. PPP Link Operation ..........................................8
- 3.1 Overview ....................................................8
- 3.2 Phase Diagram ...............................................8
- 3.3 Link Dead (physical-layer not ready) ........................9
- 3.4 Link Establishment Phase ....................................9
- 3.5 Authentication Phase ........................................9
- 3.6 Network-Layer Protocol Phase ................................10
- 3.7 Link Termination Phase ......................................10
- 4. The Option Negotiation Automaton ............................11
- 4.1 State Diagram ...............................................12
- 4.2 State Transition Table ......................................14
- 4.3 A Day in the Life ...........................................15
- 4.4 States ......................................................16
- 4.5 Events ......................................................19
- 4.6 Actions .....................................................23
- 4.7 Loop Avoidance ..............................................26
- 4.8 Counters and Timers .........................................26
- 5. LCP Packet Formats ..........................................27
- 5.1 Configure-Request ...........................................29
- 5.2 Configure-Ack ...............................................30
- 5.3 Configure-Nak ...............................................31
- 5.4 Configure-Reject ............................................33
- 5.5 Terminate-Request and Terminate-Ack .........................34
- 5.6 Code-Reject .................................................35
- 5.7 Protocol-Reject .............................................36
- 5.8 Echo-Request and Echo-Reply .................................37
- 5.9 Discard-Request .............................................39
- 6. LCP Configuration Options ...................................40
- 6.1 Maximum-Receive-Unit ........................................41
- 6.2 Async-Control-Character-Map .................................42
- 6.3 Authentication-Protocol .....................................43
- 6.4 Quality-Protocol ............................................45
- 6.5 Magic-Number ................................................46
- 6.6 Protocol-Field-Compression ..................................49
- 6.7 Address-and-Control-Field-Compression .......................50
- APPENDIX A. LCP Recommended Options ..............................51
- SECURITY CONSIDERATIONS ..........................................51
- REFERENCES .......................................................52
- ACKNOWLEDGEMENTS .................................................52
- CHAIR'S ADDRESS ..................................................52
- EDITOR'S ADDRESS .................................................53
-
-
-
-
-Simpson [Page 2]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
-1. Introduction
-
- Encapsulation
-
- The PPP encapsulation provides for multiplexing of different
- network-layer protocols simultaneously over the same link. It is
- intended that PPP provide a common solution for easy connection of
- a wide variety of hosts, bridges and routers [1].
-
- The PPP encapsulation has been carefully designed to retain
- compatibility with most commonly used supporting hardware.
-
- Only 8 additional octets are necessary to form the encapsulation
- when used with the default HDLC framing. In environments where
- bandwidth is at a premium, the encapsulation and framing may be
- shortened to 2 or 4 octets.
-
- To support high speed implementations, the default encapsulation
- uses only simple fields, only one of which needs to be examined
- for demultiplexing. The default header and information fields
- fall on 32-bit boundaries, and the trailer may be padded to an
- arbitrary boundary.
-
- Link Control Protocol
-
- In order to be sufficiently versatile to be portable to a wide
- variety of environments, PPP provides a Link Control Protocol
- (LCP). The LCP is used to automatically agree upon the
- encapsulation format options, handle varying limits on sizes of
- packets, authenticate the identity of its peer on the link,
- determine when a link is functioning properly and when it is
- defunct, detect a looped-back link and other common
- misconfiguration errors, and terminate the link.
-
- Network Control Protocols
-
- Point-to-Point links tend to exacerbate many problems with the
- current family of network protocols. For instance, assignment and
- management of IP addresses, which is a problem even in LAN
- environments, is especially difficult over circuit-switched
- point-to-point links (such as dial-up modem servers). These
- problems are handled by a family of Network Control Protocols
- (NCPs), which each manage the specific needs required by their
- respective network-layer protocols. These NCPs are defined in
- companion documents.
-
-
-
-
-
-
-Simpson [Page 3]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Configuration
-
- It is intended that PPP links be easy to configure. By design,
- the standard defaults handle all common configurations. The
- implementor can specify improvements to the default configuration,
- which are automatically communicated to the peer without operator
- intervention. Finally, the operator may explicitly configure
- options for the link which enable the link to operate in
- environments where it would otherwise be impossible.
-
- This self-configuration is implemented through an extensible
- option negotiation mechanism, wherein each end of the link
- describes to the other its capabilities and requirements.
- Although the option negotiation mechanism described in this
- document is specified in terms of the Link Control Protocol (LCP),
- the same facilities are designed to be used by other control
- protocols, especially the family of NCPs.
-
-1.1 Specification of Requirements
-
- In this document, several words are used to signify the
- requirements of the specification. These words are often
- capitalized.
-
- MUST
-
- This word, or the adjective "required", means that the definition
- is an absolute requirement of the specification.
-
- MUST NOT
-
- This phrase means that the definition is an absolute prohibition
- of the specification.
-
- SHOULD
-
- This word, or the adjective "recommended", means that there may
- exist valid reasons in particular circumstances to ignore this
- item, but the full implications must be understood and carefully
- weighed before choosing a different course.
-
- MAY
-
- This word, or the adjective "optional", means that this item is
- one of an allowed set of alternatives. An implementation which
- does not include this option MUST be prepared to interoperate with
- another implementation which does include the option.
-
-
-
-
-Simpson [Page 4]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
-1.2 Terminology
-
- This document frequently uses the following terms:
-
- datagram
-
- The unit of transmission in the network layer (such as IP). A
- datagram may be encapsulated in one or more packets passed to the
- data link layer.
-
- frame
-
- The unit of transmission at the data link layer. A frame may
- include a header and/or a trailer, along with some number of units
- of data.
-
- packet
-
- The basic unit of encapsulation, which is passed across the
- interface between the network layer and the data link layer. A
- packet is usually mapped to a frame; the exceptions are when data
- link layer fragmentation is being performed, or when multiple
- packets are incorporated into a single frame.
-
- peer
-
- The other end of the point-to-point link.
-
- silently discard
-
- This means the implementation discards the packet without further
- processing. The implementation SHOULD provide the capability of
- logging the error, including the contents of the silently
- discarded packet, and SHOULD record the event in a statistics
- counter.
-
-2. PPP Encapsulation
-
- The PPP encapsulation is used to disambiguate multiprotocol
- datagrams. This encapsulation requires framing to indicate the
- beginning and end of the encapsulation. Methods of providing framing
- are specified in companion documents.
-
-
-
-
-
-
-
-
-
-Simpson [Page 5]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- A summary of the PPP encapsulation is shown below. The fields are
- transmitted from left to right.
-
- +----------+-------------+---------+
- | Protocol | Information | Padding |
- | 16 bits | * | * |
- +----------+-------------+---------+
-
- Protocol Field
-
- The Protocol field is two octets and its value identifies the
- datagram encapsulated in the Information field of the packet. The
- field is transmitted and received most significant octet first.
-
- The structure of this field is consistent with the ISO 3309
- extension mechanism for address fields. All Protocols MUST be
- odd; the least significant bit of the least significant octet MUST
- equal "1". Also, all Protocols MUST be assigned such that the
- least significant bit of the most significant octet equals "0".
- Frames received which don't comply with these rules MUST be
- treated as having an unrecognized Protocol.
-
- Protocol field values in the "0***" to "3***" range identify the
- network-layer protocol of specific packets, and values in the
- "8***" to "b***" range identify packets belonging to the
- associated Network Control Protocols (NCPs), if any.
-
- Protocol field values in the "4***" to "7***" range are used for
- protocols with low volume traffic which have no associated NCP.
- Protocol field values in the "c***" to "f***" range identify
- packets as link-layer Control Protocols (such as LCP).
-
- Up-to-date values of the Protocol field are specified in the most
- recent "Assigned Numbers" RFC [2]. Current values are assigned as
- follows:
-
- Value (in hex) Protocol Name
-
- 0001 Padding Protocol
- 0003 to 001f reserved (transparency inefficient)
- 0021 Internet Protocol
- 0023 OSI Network Layer
- 0025 Xerox NS IDP
- 0027 DECnet Phase IV
- 0029 Appletalk
- 002b Novell IPX
- 002d Van Jacobson Compressed TCP/IP
- 002f Van Jacobson Uncompressed TCP/IP
-
-
-
-Simpson [Page 6]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- 0031 Bridging PDU
- 0033 Stream Protocol (ST-II)
- 0035 Banyan Vines
- 0037 unused
- 0039 AppleTalk EDDP
- 003b AppleTalk SmartBuffered
- 003d Multi-Link
- 005d reserved (compression inefficient)
- 00cf reserved (PPP NLPID)
- 00fd 1st choice compression
- 00ff reserved (compression inefficient)
-
- 0201 802.1d Hello Packets
- 0203 IBM Source Routing BPDU
- 0231 Luxcom
- 0233 Sigma Network Systems
-
- 8021 Internet Protocol Control Protocol
- 8023 OSI Network Layer Control Protocol
- 8025 Xerox NS IDP Control Protocol
- 8027 DECnet Phase IV Control Protocol
- 8029 Appletalk Control Protocol
- 802b Novell IPX Control Protocol
- 802d Reserved
- 802f Reserved
- 8031 Bridging NCP
- 8033 Stream Protocol Control Protocol
- 8035 Banyan Vines Control Protocol
- 8037 unused
- 8039 Reserved
- 803b Reserved
- 803d Multi-Link Control Protocol
- 80fd Compression Control Protocol
- 80ff Reserved
-
- c021 Link Control Protocol
- c023 Password Authentication Protocol
- c025 Link Quality Report
- c223 Challenge Handshake Authentication Protocol
-
- Developers of new protocols MUST obtain a number from the Internet
- Assigned Numbers Authority (IANA), at IANA@isi.edu.
-
- Information Field
-
- The Information field is zero or more octets. The Information
- field contains the datagram for the protocol specified in the
- Protocol field.
-
-
-
-Simpson [Page 7]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- The maximum length for the Information field, including Padding,
- is termed the Maximum Receive Unit (MRU), which defaults to 1500
- octets. By negotiation, consenting PPP implementations may use
- other values for the MRU.
-
- Padding
-
- On transmission, the Information field MAY be padded with an
- arbitrary number of octets up to the MRU. It is the
- responsibility of each protocol to distinguish padding octets from
- real information.
-
-3. PPP Link Operation
-
-3.1 Overview
-
- In order to establish communications over a point-to-point link, each
- end of the PPP link MUST first send LCP packets to configure and test
- the data link. After the link has been established, the peer MAY be
- authenticated. Then, PPP MUST send NCP packets to choose and
- configure one or more network-layer protocols. Once each of the
- chosen network-layer protocols has been configured, datagrams from
- each network-layer protocol can be sent over the link.
-
- The link will remain configured for communications until explicit LCP
- or NCP packets close the link down, or until some external event
- occurs (an inactivity timer expires or network administrator
- intervention).
-
-3.2 Phase Diagram
-
- In the process of configuring, maintaining and terminating the
- point-to-point link, the PPP link goes through several distinct
- phases:
-
- +------+ +-----------+ +--------------+
- | | UP | | OPENED | | SUCCESS/NONE
- | Dead |------->| Establish |---------->| Authenticate |--+
- | | | | | | |
- +------+ +-----------+ +--------------+ |
- ^ FAIL | FAIL | |
- +<--------------+ +----------+ |
- | | |
- | +-----------+ | +---------+ |
- | DOWN | | | CLOSING | | |
- +------------| Terminate |<---+<----------| Network |<-+
- | | | |
- +-----------+ +---------+
-
-
-
-Simpson [Page 8]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
-3.3 Link Dead (physical-layer not ready)
-
- The link necessarily begins and ends with this phase. When an
- external event (such as carrier detection or network administrator
- configuration) indicates that the physical-layer is ready to be used,
- PPP will proceed to the Link Establishment phase.
-
- During this phase, the LCP automaton (described below) will be in the
- Initial or Starting states. The transition to the Link Establishment
- phase will signal an Up event to the automaton.
-
- Implementation Note:
-
- Typically, a link will return to this phase automatically after
- the disconnection of a modem. In the case of a hard-wired line,
- this phase may be extremely short -- merely long enough to detect
- the presence of the device.
-
-3.4 Link Establishment Phase
-
- The Link Control Protocol (LCP) is used to establish the connection
- through an exchange of Configure packets. This exchange is complete,
- and the LCP Opened state entered, once a Configure-Ack packet
- (described below) has been both sent and received.
-
- All Configuration Options are assumed to be at default values unless
- altered by the configuration exchange. See the section on LCP
- Configuration Options for further discussion.
-
- It is important to note that only Configuration Options which are
- independent of particular network-layer protocols are configured by
- LCP. Configuration of individual network-layer protocols is handled
- by separate Network Control Protocols (NCPs) during the Network-Layer
- Protocol phase.
-
- Any non-LCP packets received during this phase MUST be silently
- discarded.
-
-3.5 Authentication Phase
-
- On some links it may be desirable to require a peer to authenticate
- itself before allowing network-layer protocol packets to be
- exchanged.
-
- By default, authentication is not mandatory. If an implementation
- desires that the peer authenticate with some specific authentication
- protocol, then it MUST negotiate the use of that authentication
- protocol during Link Establishment phase.
-
-
-
-Simpson [Page 9]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Authentication SHOULD take place as soon as possible after link
- establishment. However, link quality determination MAY occur
- concurrently. An implementation MUST NOT allow the exchange of link
- quality determination packets to delay authentication indefinitely.
-
- Advancement from the Authentication phase to the Network-Layer
- Protocol phase MUST NOT occur until authentication has completed,
- using the negotiated authentication protocol. If authentication
- fails, PPP SHOULD proceed instead to the Link Termination phase.
-
- Any Network Control Protocol or network-layer protocol packets
- received during this phase MUST be silently discarded.
-
-3.6 Network-Layer Protocol Phase
-
- Once PPP has finished the previous phases, each network-layer
- protocol (such as IP, IPX, or AppleTalk) MUST be separately
- configured by the appropriate Network Control Protocol (NCP).
-
- Each NCP MAY be Opened and Closed at any time.
-
- Implementation Note:
-
- Because an implementation may initially use a significant amount
- of time for link quality determination, implementations SHOULD
- avoid fixed timeouts when waiting for their peers to configure a
- NCP.
-
- After a NCP has reached the Opened state, PPP will carry the
- corresponding network-layer protocol packets. Any network-layer
- protocol packets received when the corresponding NCP is not in the
- Opened state MUST be silently discarded.
-
- Implementation Note:
-
- There is an exception to the preceding paragraphs, due to the
- availability of the LCP Protocol-Reject (described below). While
- LCP is in the Opened state, any protocol packet which is
- unsupported by the implementation MUST be returned in a Protocol-
- Reject. Only protocols which are supported are silently
- discarded.
-
- During this phase, link traffic consists of any possible
- combination of LCP, NCP, and network-layer protocol packets.
-
-3.7 Link Termination Phase
-
- PPP can terminate the link at any time. This might happen because of
-
-
-
-Simpson [Page 10]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- the loss of carrier, authentication failure, link quality failure,
- the expiration of an idle-period timer, or the administrative closing
- of the link. LCP is used to close the link through an exchange of
- Terminate packets. When the link is closing, PPP informs the
- network-layer protocols so that they may take appropriate action.
-
- After the exchange of Terminate packets, the implementation SHOULD
- signal the physical-layer to disconnect in order to enforce the
- termination of the link, particularly in the case of an
- authentication failure. The sender of the Terminate-Request SHOULD
- disconnect after receiving a Terminate-Ack, or after the Restart
- counter expires. The receiver of a Terminate-Request SHOULD wait for
- the peer to disconnect, and MUST NOT disconnect until at least one
- Restart time has passed after sending a Terminate-Ack. PPP SHOULD
- proceed to the Link Dead phase.
-
- Any non-LCP packets received during this phase MUST be silently
- discarded.
-
- Implementation Note:
-
- The closing of the link by LCP is sufficient. There is no need
- for each NCP to send a flurry of Terminate packets. Conversely,
- the fact that one NCP has Closed is not sufficient reason to cause
- the termination of the PPP link, even if that NCP was the only NCP
- currently in the Opened state.
-
-4. The Option Negotiation Automaton
-
- The finite-state automaton is defined by events, actions and state
- transitions. Events include reception of external commands such as
- Open and Close, expiration of the Restart timer, and reception of
- packets from a peer. Actions include the starting of the Restart
- timer and transmission of packets to the peer.
-
- Some types of packets -- Configure-Naks and Configure-Rejects, or
- Code-Rejects and Protocol-Rejects, or Echo-Requests, Echo-Replies and
- Discard-Requests -- are not differentiated in the automaton
- descriptions. As will be described later, these packets do indeed
- serve different functions. However, they always cause the same
- transitions.
-
-Events Actions
-
-Up = lower layer is Up tlu = This-Layer-Up
-Down = lower layer is Down tld = This-Layer-Down
-Open = administrative Open tls = This-Layer-Started
-Close= administrative Close tlf = This-Layer-Finished
-
-
-
-Simpson [Page 11]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
-TO+ = Timeout with counter > 0 irc = Initialize-Restart-Counter
-TO- = Timeout with counter expired zrc = Zero-Restart-Counter
-
-RCR+ = Receive-Configure-Request (Good) scr = Send-Configure-Request
-RCR- = Receive-Configure-Request (Bad)
-RCA = Receive-Configure-Ack sca = Send-Configure-Ack
-RCN = Receive-Configure-Nak/Rej scn = Send-Configure-Nak/Rej
-
-RTR = Receive-Terminate-Request str = Send-Terminate-Request
-RTA = Receive-Terminate-Ack sta = Send-Terminate-Ack
-
-RUC = Receive-Unknown-Code scj = Send-Code-Reject
-RXJ+ = Receive-Code-Reject (permitted)
- or Receive-Protocol-Reject
-RXJ- = Receive-Code-Reject (catastrophic)
- or Receive-Protocol-Reject
-RXR = Receive-Echo-Request ser = Send-Echo-Reply
- or Receive-Echo-Reply
- or Receive-Discard-Request
-
-4.1 State Diagram
-
- The simplified state diagram which follows describes the sequence of
- events for reaching agreement on Configuration Options (opening the
- PPP link) and for later termination of the link.
-
- This diagram is not a complete representation of the automaton.
- Implementation MUST be done by consulting the actual state transition
- table.
-
- Events are in upper case. Actions are in lower case. For these
- purposes, the state machine is initially in the Closed state. Once
- the Opened state has been reached, both ends of the link have met the
- requirement of having both sent and received a Configure-Ack packet.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 12]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- RCR TO+
- +--sta-->+ +------->+
- | | | |
- +-------+ | RTA +-------+ | Close +-------+
- | |<-----+<------| |<-str-+<------| |
- |Closed | |Closing| |Opened |
- | | Open | | | |
- | |------+ | | | |
- +-------+ | +-------+ +-------+
- | ^
- | |
- | +-sca----------------->+
- | | ^
- RCN,TO+ V RCR+ | RCR- RCA | RCN,TO+
- +------->+ | +------->+ | +--scr-->+
- | | | | | | | |
- +-------+ | TO+ +-------+ | +-------+ |
- | |<-scr-+<------| |<-scn-+ | |<-----+
- | Req- | | Ack- | | Ack- |
- | Sent | RCA | Rcvd | | Sent |
- +-scn->| |------------->| | +-sca->| |
- | +-------+ +-------+ | +-------+
- | RCR- | | RCR+ | RCR+ | | RCR-
- | | +------------------------------->+<-------+ |
- | | |
- +<-------+<------------------------------------------------+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 13]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
-4.2 State Transition Table
-
- The complete state transition table follows. States are indicated
- horizontally, and events are read vertically. State transitions and
- actions are represented in the form action/new-state. Multiple
- actions are separated by commas, and may continue on succeeding lines
- as space requires; multiple actions may be implemented in any
- convenient order. The state may be followed by a letter, which
- indicates an explanatory footnote. The dash ('-') indicates an
- illegal transition.
-
-
- | State
- | 0 1 2 3 4 5
- Events| Initial Starting Closed Stopped Closing Stopping
- ------+-----------------------------------------------------------
- Up | 2 irc,scr/6 - - - -
- Down | - - 0 tls/1 0 1
- Open | tls/1 1 irc,scr/6 3r 5r 5r
- Close| 0 0 2 2 4 4
- |
- TO+ | - - - - str/4 str/5
- TO- | - - - - tlf/2 tlf/3
- |
- RCR+ | - - sta/2 irc,scr,sca/8 4 5
- RCR- | - - sta/2 irc,scr,scn/6 4 5
- RCA | - - sta/2 sta/3 4 5
- RCN | - - sta/2 sta/3 4 5
- |
- RTR | - - sta/2 sta/3 sta/4 sta/5
- RTA | - - 2 3 tlf/2 tlf/3
- |
- RUC | - - scj/2 scj/3 scj/4 scj/5
- RXJ+ | - - 2 3 4 5
- RXJ- | - - tlf/2 tlf/3 tlf/2 tlf/3
- |
- RXR | - - 2 3 4 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 14]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- | State
- | 6 7 8 9
- Events| Req-Sent Ack-Rcvd Ack-Sent Opened
- ------+-----------------------------------------
- Up | - - - -
- Down | 1 1 1 tld/1
- Open | 6 7 8 9r
- Close|irc,str/4 irc,str/4 irc,str/4 tld,irc,str/4
- |
- TO+ | scr/6 scr/6 scr/8 -
- TO- | tlf/3p tlf/3p tlf/3p -
- |
- RCR+ | sca/8 sca,tlu/9 sca/8 tld,scr,sca/8
- RCR- | scn/6 scn/7 scn/6 tld,scr,scn/6
- RCA | irc/7 scr/6x irc,tlu/9 tld,scr/6x
- RCN |irc,scr/6 scr/6x irc,scr/8 tld,scr/6x
- |
- RTR | sta/6 sta/6 sta/6 tld,zrc,sta/5
- RTA | 6 6 8 tld,scr/6
- |
- RUC | scj/6 scj/7 scj/8 scj/9
- RXJ+ | 6 6 8 9
- RXJ- | tlf/3 tlf/3 tlf/3 tld,irc,str/5
- |
- RXR | 6 7 8 ser/9
-
- The states in which the Restart timer is running are identifiable by
- the presence of TO events. Only the Send-Configure-Request, Send-
- Terminate-Request and Zero-Restart-Counter actions start or re-start
- the Restart timer. The Restart timer is stopped when transitioning
- from any state where the timer is running to a state where the timer
- is not running.
-
- [p] Passive option; see Stopped state discussion.
-
- [r] Restart option; see Open event discussion.
-
- [x] Crossed connection; see RCA event discussion.
-
-4.3 A Day in the Life
-
- Here is an example of how a typical implementation might use the
- automaton to implement LCP in a dial-up environment:
-
- - The Network Access Server is powered on (Initial state, Link Dead
- phase).
-
- - A configuration file indicates that a particular link is to be
-
-
-
-Simpson [Page 15]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- used for PPP access (Open: tls/Starting). The This-Layer-Started
- event turns on DTR to a modem, readying it for accepting calls.
-
- - An incoming call is answered. The modem CD triggers configuration
- negotiation (Up: irc,scr/Req-Sent, Link Establishment phase).
-
- - A Configure-Request is received, which is acknowleged (RCR+:
- sca/Ack-Sent).
-
- - The Request is acknowleged (RCA: irc,tlu/Opened). The This-
- Layer-Up event starts authentication and quality monitoring
- protocols (Authentication phase).
-
- - When authentication and quality monitoring are satisfied, they
- send an Up event to start the available NCPs (Network-Layer
- Protocol phase).
-
- - Later, the peer is finished, and closes the link. A Terminate-
- Request arrives (RTR: tld,zrc,sta/Stopping, Termination phase).
- The This-Layer-Down action sends the Down event to any NCPs, while
- the Terminate-Ack is sent. The Zero-Restart-Counter action causes
- the link to wait for the peer to process the Terminate-Ack, with
- no retries.
-
- - When the Restart Timer times out (TO-: tlf/Stopped), the This-
- Layer-Finished action signals the modem to hang up by dropping
- DTR.
-
- - When the CD from the modem drops (Down: tls/Starting), the This-
- Layer-Started action raises DTR again, readying it for the next
- call (returning to the Link Dead phase).
-
-4.4 States
-
- Following is a more detailed description of each automaton state.
-
- Initial
-
- In the Initial state, the lower layer is unavailable (Down), and
- no Open has occurred. The Restart timer is not running in the
- Initial state.
-
- Starting
-
- The Starting state is the Open counterpart to the Initial state.
- An administrative Open has been initiated, but the lower layer is
- still unavailable (Down). The Restart timer is not running in the
- Starting state.
-
-
-
-Simpson [Page 16]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- When the lower layer becomes available (Up), a Configure-Request
- is sent.
-
- Closed
-
- In the Closed state, the link is available (Up), but no Open has
- occurred. The Restart timer is not running in the Closed state.
-
- Upon reception of Configure-Request packets, a Terminate-Ack is
- sent. Terminate-Acks are silently discarded to avoid creating a
- loop.
-
- Stopped
-
- The Stopped state is the Open counterpart to the Closed state. It
- is entered when the automaton is waiting for a Down event after
- the This-Layer-Finished action, or after sending a Terminate-Ack.
- The Restart timer is not running in the Stopped state.
-
- Upon reception of Configure-Request packets, an appropriate
- response is sent. Upon reception of other packets, a Terminate-
- Ack is sent. Terminate-Acks are silently discarded to avoid
- creating a loop.
-
- Rationale:
-
- The Stopped state is a junction state for link termination, link
- configuration failure, and other automaton failure modes. These
- potentially separate states have been combined.
-
- There is a race condition between the Down event response (from
- the This-Layer-Finished action) and the Receive-Configure- Request
- event. When a Configure-Request arrives before the Down event,
- the Down event will supercede by returning the automaton to the
- Starting state. This prevents attack by repetition.
-
- Implementation Option:
-
- After the peer fails to respond to Configure-Requests, an
- implementation MAY wait passively for the peer to send Configure-
- Requests. In this case, the This-Layer-Finished action is not
- used for the TO- event in states Req-Sent, Ack- Rcvd and Ack-Sent.
-
- This option is useful for dedicated circuits, or circuits which
- have no status signals available, but SHOULD NOT be used for
- switched circuits.
-
-
-
-
-
-Simpson [Page 17]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Closing
-
- In the Closing state, an attempt is made to terminate the
- connection. A Terminate-Request has been sent and the Restart
- timer is running, but a Terminate-Ack has not yet been received.
-
- Upon reception of a Terminate-Ack, the Closed state is entered.
- Upon the expiration of the Restart timer, a new Terminate-Request
- is transmitted and the Restart timer is restarted. After the
- Restart timer has expired Max-Terminate times, this action may be
- skipped, and the Closed state may be entered.
-
- Stopping
-
- The Stopping state is the Open counterpart to the Closing state.
- A Terminate-Request has been sent and the Restart timer is
- running, but a Terminate-Ack has not yet been received.
-
- Rationale:
-
- The Stopping state provides a well defined opportunity to
- terminate a link before allowing new traffic. After the link has
- terminated, a new configuration may occur via the Stopped or
- Starting states.
-
- Request-Sent
-
- In the Request-Sent state an attempt is made to configure the
- connection. A Configure-Request has been sent and the Restart
- timer is running, but a Configure-Ack has not yet been received
- nor has one been sent.
-
- Ack-Received
-
- In the Ack-Received state, a Configure-Request has been sent and a
- Configure-Ack has been received. The Restart timer is still
- running since a Configure-Ack has not yet been sent.
-
- Ack-Sent
-
- In the Ack-Sent state, a Configure-Request and a Configure-Ack
- have both been sent but a Configure-Ack has not yet been received.
- The Restart timer is always running in the Ack-Sent state.
-
- Opened
-
- In the Opened state, a Configure-Ack has been both sent and
- received. The Restart timer is not running in the Opened state.
-
-
-
-Simpson [Page 18]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- When entering the Opened state, the implementation SHOULD signal
- the upper layers that it is now Up. Conversely, when leaving the
- Opened state, the implementation SHOULD signal the upper layers
- that it is now Down.
-
-4.5 Events
-
- Transitions and actions in the automaton are caused by events.
-
- Up
-
- The Up event occurs when a lower layer indicates that it is ready
- to carry packets.
-
- Typically, this event is used by a modem handling or calling
- process, or by some other coupling of the PPP link to the physical
- media, to signal LCP that the link is entering Link Establishment
- phase.
-
- It also can be used by LCP to signal each NCP that the link is
- entering Network-Layer Protocol phase. That is, the This-Layer-Up
- action from LCP triggers the Up event in the NCP.
-
- Down
-
- The Down event occurs when a lower layer indicates that it is no
- longer ready to carry packets.
-
- Typically, this event is used by a modem handling or calling
- process, or by some other coupling of the PPP link to the physical
- media, to signal LCP that the link is entering Link Dead phase.
-
- It also can be used by LCP to signal each NCP that the link is
- leaving Network-Layer Protocol phase. That is, the This-Layer-
- Down action from LCP triggers the Down event in the NCP.
-
- Open
-
- The Open event indicates that the link is administratively
- available for traffic; that is, the network administrator (human
- or program) has indicated that the link is allowed to be Opened.
- When this event occurs, and the link is not in the Opened state,
- the automaton attempts to send configuration packets to the peer.
-
- If the automaton is not able to begin configuration (the lower
- layer is Down, or a previous Close event has not completed), the
- establishment of the link is automatically delayed.
-
-
-
-
-Simpson [Page 19]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- When a Terminate-Request is received, or other events occur which
- cause the link to become unavailable, the automaton will progress
- to a state where the link is ready to re-open. No additional
- administrative intervention is necessary.
-
- Implementation Option:
-
- Experience has shown that users will execute an additional Open
- command when they want to renegotiate the link. This might
- indicate that new values are to be negotiated.
-
- Since this is not the meaning of the Open event, it is suggested
- that when an Open user command is executed in the Opened, Closing,
- Stopping, or Stopped states, the implementation issue a Down
- event, immediately followed by an Up event. This will cause the
- renegotiation of the link, without any harmful side effects.
-
- Close
-
- The Close event indicates that the link is not available for
- traffic; that is, the network administrator (human or program) has
- indicated that the link is not allowed to be Opened. When this
- event occurs, and the link is not in the Closed state, the
- automaton attempts to terminate the connection. Futher attempts
- to re-configure the link are denied until a new Open event occurs.
-
- Implementation Note:
-
- When authentication fails, the link SHOULD be terminated, to
- prevent attack by repetition and denial of service to other users.
- Since the link is administratively available (by definition), this
- can be accomplished by simulating a Close event to the LCP,
- immediately followed by an Open event.
-
- The Close followed by an Open will cause an orderly termination of
- the link, by progressing from the Closing to the Stopping state,
- and the This-Layer-Finished action can disconnect the link. The
- automaton waits in the Stopped or Starting states for the next
- connection attempt.
-
- Timeout (TO+,TO-)
-
- This event indicates the expiration of the Restart timer. The
- Restart timer is used to time responses to Configure-Request and
- Terminate-Request packets.
-
- The TO+ event indicates that the Restart counter continues to be
- greater than zero, which triggers the corresponding Configure-
-
-
-
-Simpson [Page 20]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Request or Terminate-Request packet to be retransmitted.
-
- The TO- event indicates that the Restart counter is not greater
- than zero, and no more packets need to be retransmitted.
-
- Receive-Configure-Request (RCR+,RCR-)
-
- This event occurs when a Configure-Request packet is received from
- the peer. The Configure-Request packet indicates the desire to
- open a connection and may specify Configuration Options. The
- Configure-Request packet is more fully described in a later
- section.
-
- The RCR+ event indicates that the Configure-Request was
- acceptable, and triggers the transmission of a corresponding
- Configure-Ack.
-
- The RCR- event indicates that the Configure-Request was
- unacceptable, and triggers the transmission of a corresponding
- Configure-Nak or Configure-Reject.
-
- Implementation Note:
-
- These events may occur on a connection which is already in the
- Opened state. The implementation MUST be prepared to immediately
- renegotiate the Configuration Options.
-
- Receive-Configure-Ack (RCA)
-
- The Receive-Configure-Ack event occurs when a valid Configure-Ack
- packet is received from the peer. The Configure-Ack packet is a
- positive response to a Configure-Request packet. An out of
- sequence or otherwise invalid packet is silently discarded.
-
- Implementation Note:
-
- Since the correct packet has already been received before reaching
- the Ack-Rcvd or Opened states, it is extremely unlikely that
- another such packet will arrive. As specified, all invalid
- Ack/Nak/Rej packets are silently discarded, and do not affect the
- transitions of the automaton.
-
- However, it is not impossible that a correctly formed packet will
- arrive through a coincidentally-timed cross-connection. It is
- more likely to be the result of an implementation error. At the
- very least, this occurance SHOULD be logged.
-
-
-
-
-
-Simpson [Page 21]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Receive-Configure-Nak/Rej (RCN)
-
- This event occurs when a valid Configure-Nak or Configure-Reject
- packet is received from the peer. The Configure-Nak and
- Configure-Reject packets are negative responses to a Configure-
- Request packet. An out of sequence or otherwise invalid packet is
- silently discarded.
-
- Implementation Note:
-
- Although the Configure-Nak and Configure-Reject cause the same
- state transition in the automaton, these packets have
- significantly different effects on the Configuration Options sent
- in the resulting Configure-Request packet.
-
- Receive-Terminate-Request (RTR)
-
- The Receive-Terminate-Request event occurs when a Terminate-
- Request packet is received. The Terminate-Request packet
- indicates the desire of the peer to close the connection.
-
- Implementation Note:
-
- This event is not identical to the Close event (see above), and
- does not override the Open commands of the local network
- administrator. The implementation MUST be prepared to receive a
- new Configure-Request without network administrator intervention.
-
- Receive-Terminate-Ack (RTA)
-
- The Receive-Terminate-Ack event occurs when a Terminate-Ack packet
- is received from the peer. The Terminate-Ack packet is usually a
- response to a Terminate-Request packet. The Terminate-Ack packet
- may also indicate that the peer is in Closed or Stopped states,
- and serves to re-synchronize the link configuration.
-
- Receive-Unknown-Code (RUC)
-
- The Receive-Unknown-Code event occurs when an un-interpretable
- packet is received from the peer. A Code-Reject packet is sent in
- response.
-
- Receive-Code-Reject, Receive-Protocol-Reject (RXJ+,RXJ-)
-
- This event occurs when a Code-Reject or a Protocol-Reject packet
- is received from the peer.
-
- The RXJ+ event arises when the rejected value is acceptable, such
-
-
-
-Simpson [Page 22]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- as a Code-Reject of an extended code, or a Protocol-Reject of a
- NCP. These are within the scope of normal operation. The
- implementation MUST stop sending the offending packet type.
-
- The RXJ- event arises when the rejected value is catastrophic,
- such as a Code-Reject of Configure-Request, or a Protocol-Reject
- of LCP! This event communicates an unrecoverable error that
- terminates the connection.
-
- Receive-Echo-Request, Receive-Echo-Reply, Receive-Discard-Request
- (RXR)
-
- This event occurs when an Echo-Request, Echo-Reply or Discard-
- Request packet is received from the peer. The Echo-Reply packet is
- a response to a Echo-Request packet. There is no reply to an Echo-
- Reply or Discard-Request packet.
-
-4.6 Actions
-
- Actions in the automaton are caused by events and typically indicate
- the transmission of packets and/or the starting or stopping of the
- Restart timer.
-
- Illegal-Event (-)
-
- This indicates an event that cannot occur in a properly
- implemented automaton. The implementation has an internal error,
- which should be reported and logged. No transition is taken, and
- the implementation SHOULD NOT reset or freeze.
-
- This-Layer-Up (tlu)
-
- This action indicates to the upper layers that the automaton is
- entering the Opened state.
-
- Typically, this action is used by the LCP to signal the Up event
- to a NCP, Authentication Protocol, or Link Quality Protocol, or
- MAY be used by a NCP to indicate that the link is available for
- its network layer traffic.
-
- This-Layer-Down (tld)
-
- This action indicates to the upper layers that the automaton is
- leaving the Opened state.
-
- Typically, this action is used by the LCP to signal the Down event
- to a NCP, Authentication Protocol, or Link Quality Protocol, or
- MAY be used by a NCP to indicate that the link is no longer
-
-
-
-Simpson [Page 23]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- available for its network layer traffic.
-
- This-Layer-Started (tls)
-
- This action indicates to the lower layers that the automaton is
- entering the Starting state, and the lower layer is needed for the
- link. The lower layer SHOULD respond with an Up event when the
- lower layer is available.
-
- Implementation Note:
-
- This results of this action are highly implementation dependent.
-
- The transitions where this event is indicated are defined
- according to a message passing architecture, rather than a
- signalling architecture. If the action is desired to control
- specific signals (such as DTR), other transitions for the action
- are likely to be required (Open in Closed, RCR in Stopped).
-
- This-Layer-Finished (tlf)
-
- This action indicates to the lower layers that the automaton is
- entering the Stopped or Closed states, and the lower layer is no
- longer needed for the link. The lower layer SHOULD respond with a
- Down event when the lower layer has terminated.
-
- Typically, this action MAY be used by the LCP to advance to the
- Link Dead phase, or MAY be used by a NCP to indicate to the LCP
- that the link may terminate when there are no other NCPs open.
-
- Implementation Note:
-
- This results of this action are highly implementation dependent.
-
- The transitions where this event is indicated are defined
- according to a message passing architecture, rather than a
- signalling architecture. If the action is desired to control
- specific signals (such as DTR), other transitions for the action
- are likely to be required (Close in Starting, Down in Closing).
-
- Initialize-Restart-Counter (irc)
-
- This action sets the Restart counter to the appropriate value
- (Max-Terminate or Max-Configure). The counter is decremented for
- each transmission, including the first.
-
-
-
-
-
-
-Simpson [Page 24]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Implementation Note:
-
- In addition to setting the Restart counter, the implementation
- MUST set the timeout period to the initial value when Restart
- timer backoff is used.
-
- Zero-Restart-Counter (zrc)
-
- This action sets the Restart counter to zero.
-
- Implementation Note:
-
- This action enables the FSA to pause before proceeding to the
- desired final state, allowing traffic to be processed by the peer.
- In addition to zeroing the Restart counter, the implementation
- MUST set the timeout period to an appropriate value.
-
- Send-Configure-Request (scr)
-
- The Send-Configure-Request action transmits a Configure-Request
- packet. This indicates the desire to open a connection with a
- specified set of Configuration Options. The Restart timer is
- started when the Configure-Request packet is transmitted, to guard
- against packet loss. The Restart counter is decremented each time
- a Configure-Request is sent.
-
- Send-Configure-Ack (sca)
-
- The Send-Configure-Ack action transmits a Configure-Ack packet.
- This acknowledges the reception of a Configure-Request packet with
- an acceptable set of Configuration Options.
-
- Send-Configure-Nak (scn)
-
- The Send-Configure-Nak action transmits a Configure-Nak or
- Configure-Reject packet, as appropriate. This negative response
- reports the reception of a Configure-Request packet with an
- unacceptable set of Configuration Options. Configure-Nak packets
- are used to refuse a Configuration Option value, and to suggest a
- new, acceptable value. Configure-Reject packets are used to
- refuse all negotiation about a Configuration Option, typically
- because it is not recognized or implemented. The use of
- Configure-Nak versus Configure-Reject is more fully described in
- the section on LCP Packet Formats.
-
- Send-Terminate-Request (str)
-
- The Send-Terminate-Request action transmits a Terminate-Request
-
-
-
-Simpson [Page 25]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- packet. This indicates the desire to close a connection. The
- Restart timer is started when the Terminate-Request packet is
- transmitted, to guard against packet loss. The Restart counter is
- decremented each time a Terminate-Request is sent.
-
- Send-Terminate-Ack (sta)
-
- The Send-Terminate-Ack action transmits a Terminate-Ack packet.
- This acknowledges the reception of a Terminate-Request packet or
- otherwise serves to synchronize the state machines.
-
- Send-Code-Reject (scj)
-
- The Send-Code-Reject action transmits a Code-Reject packet. This
- indicates the reception of an unknown type of packet.
-
- Send-Echo-Reply (ser)
-
- The Send-Echo-Reply action transmits an Echo-Reply packet. This
- acknowledges the reception of an Echo-Request packet.
-
-4.7 Loop Avoidance
-
- The protocol makes a reasonable attempt at avoiding Configuration
- Option negotiation loops. However, the protocol does NOT guarantee
- that loops will not happen. As with any negotiation, it is possible
- to configure two PPP implementations with conflicting policies that
- will never converge. It is also possible to configure policies which
- do converge, but which take significant time to do so. Implementors
- should keep this in mind and SHOULD implement loop detection
- mechanisms or higher level timeouts.
-
-
-4.8 Counters and Timers
-
- Restart Timer
-
- There is one special timer used by the automaton. The Restart
- timer is used to time transmissions of Configure-Request and
- Terminate- Request packets. Expiration of the Restart timer
- causes a Timeout event, and retransmission of the corresponding
- Configure-Request or Terminate-Request packet. The Restart timer
- MUST be configurable, but SHOULD default to three (3) seconds.
-
- Implementation Note:
-
- The Restart timer SHOULD be based on the speed of the link. The
- default value is designed for low speed (2,400 to 9,600 bps), high
-
-
-
-Simpson [Page 26]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- switching latency links (typical telephone lines). Higher speed
- links, or links with low switching latency, SHOULD have
- correspondingly faster retransmission times.
-
- Instead of a constant value, the Restart timer MAY begin at an
- initial small value and increase to the configured final value.
- Each successive value less than the final value SHOULD be at least
- twice the previous value. The initial value SHOULD be large
- enough to account for the size of the packets, twice the round
- trip time for transmission at the link speed, and at least an
- additional 100 milliseconds to allow the peer to process the
- packets before responding. Some circuits add another 200
- milliseconds of satellite delay. Round trip times for modems
- operating at 14,400 bps have been measured in the range of 160 to
- more than 600 milliseconds.
-
- Max-Terminate
-
- There is one required restart counter for Terminate-Requests.
- Max- Terminate indicates the number of Terminate-Request packets
- sent without receiving a Terminate-Ack before assuming that the
- peer is unable to respond. Max-Terminate MUST be configurable,
- but SHOULD default to two (2) transmissions.
-
- Max-Configure
-
- A similar counter is recommended for Configure-Requests. Max-
- Configure indicates the number of Configure-Request packets sent
- without receiving a valid Configure-Ack, Configure-Nak or
- Configure- Reject before assuming that the peer is unable to
- respond. Max- Configure MUST be configurable, but SHOULD default
- to ten (10) transmissions.
-
- Max-Failure
-
- A related counter is recommended for Configure-Nak. Max-Failure
- indicates the number of Configure-Nak packets sent without sending
- a Configure-Ack before assuming that configuration is not
- converging. Any further Configure-Nak packets are converted to
- Configure-Reject packets. Max-Failure MUST be configurable, but
- SHOULD default to ten (10) transmissions.
-
-5. LCP Packet Formats
-
- There are three classes of LCP packets:
-
- 1. Link Configuration packets used to establish and configure a
- link (Configure-Request, Configure-Ack, Configure-Nak and
-
-
-
-Simpson [Page 27]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Configure-Reject).
-
- 2. Link Termination packets used to terminate a link (Terminate-
- Request and Terminate-Ack).
-
- 3. Link Maintenance packets used to manage and debug a link
- (Code-Reject, Protocol-Reject, Echo-Request, Echo-Reply, and
- Discard-Request).
-
- This document describes Version 1 of the Link Control Protocol. In
- the interest of simplicity, there is no version field in the LCP
- packet. If a new version of LCP is necessary in the future, the
- intention is that a new PPP Protocol field value will be used to
- differentiate Version 1 LCP from all other versions. A correctly
- functioning Version 1 LCP implementation will always respond to
- unknown Protocols (including other versions) with an easily
- recognizable Version 1 packet, thus providing a deterministic
- fallback mechanism for implementations of other versions.
-
- Regardless of which Configuration Options are enabled, all LCP Link
- Configuration, Link Termination, and Code-Reject packets (codes 1
- through 7) are always sent as if no Configuration Options were
- enabled. This ensures that such LCP packets are always recognizable
- even when one end of the link mistakenly believes the link to be
- open.
-
- Implementation Note:
-
- In particular, the Async-Control-Character-Map (ACCM) default for
- the type of link is used, and no address, control, or protocol
- field compression is allowed.
-
- Exactly one LCP packet is encapsulated in the PPP Information
- field, where the PPP Protocol field indicates type hex c021 (Link
- Control Protocol).
-
- A summary of the Link Control Protocol packet format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
-
-
-
-Simpson [Page 28]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Code
-
- The Code field is one octet and identifies the kind of LCP packet.
- When a packet is received with an invalid Code field, a Code-
- Reject packet is transmitted.
-
- Up-to-date values of the LCP Code field are specified in the most
- recent "Assigned Numbers" RFC [2]. This specification concerns
- the following values:
-
- 1 Configure-Request
- 2 Configure-Ack
- 3 Configure-Nak
- 4 Configure-Reject
- 5 Terminate-Request
- 6 Terminate-Ack
- 7 Code-Reject
- 8 Protocol-Reject
- 9 Echo-Request
- 10 Echo-Reply
- 11 Discard-Request
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies. When a packet is received with an invalid Identifier
- field, the packet is silently discarded.
-
- Length
-
- The Length field is two octets and indicates the length of the LCP
- packet including the Code, Identifier, Length and Data fields.
- Octets outside the range of the Length field are treated as
- padding and are ignored on reception. When a packet is received
- with an invalid Length field, the packet is silently discarded.
-
- Data
-
- The Data field is zero or more octets as indicated by the Length
- field. The format of the Data field is determined by the Code
- field.
-
-5.1 Configure-Request
-
- Description
-
- An implementation wishing to open a connection MUST transmit a LCP
- packet with the Code field set to 1 (Configure-Request), and the
-
-
-
-Simpson [Page 29]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Options field filled with any desired changes to the link
- defaults. Configuration Options SHOULD NOT be included with
- default values.
-
- Upon reception of a Configure-Request, an appropriate reply MUST
- be transmitted.
-
- A summary of the Configure-Request packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options ...
- +-+-+-+-+
-
- Code
-
- 1 for Configure-Request.
-
- Identifier
-
- The Identifier field MUST be changed whenever the content of the
- Options field changes, and whenever a valid reply has been
- received for a previous request. For retransmissions, the
- Identifier MAY remain unchanged.
-
- Options
-
- The options field is variable in length and contains the list of
- zero or more Configuration Options that the sender desires to
- negotiate. All Configuration Options are always negotiated
- simultaneously. The format of Configuration Options is further
- described in a later section.
-
-5.2 Configure-Ack
-
- Description
-
- If every Configuration Option received in a Configure-Request is
- recognizable and all values are acceptable, then the
- implementation MUST transmit a LCP packet with the Code field set
- to 2 (Configure-Ack), the Identifier field copied from the
- received Configure-Request, and the Options field copied from the
- received Configure-Request. The acknowledged Configuration
- Options MUST NOT be reordered or modified in any way.
-
-
-
-Simpson [Page 30]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- On reception of a Configure-Ack, the Identifier field MUST match
- that of the last transmitted Configure-Request. Additionally, the
- Configuration Options in a Configure-Ack MUST exactly match those
- of the last transmitted Configure-Request. Invalid packets are
- silently discarded.
-
- A summary of the Configure-Ack packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options ...
- +-+-+-+-+
-
- Code
-
- 2 for Configure-Ack.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Configure-Request which caused this Configure-Ack.
-
- Options
-
- The Options field is variable in length and contains the list of
- zero or more Configuration Options that the sender is
- acknowledging. All Configuration Options are always acknowledged
- simultaneously.
-
-5.3 Configure-Nak
-
- Description
-
- If every element of the received Configuration Options is
- recognizable but some values are not acceptable, then the
- implementation MUST transmit a LCP packet with the Code field set
- to 3 (Configure-Nak), the Identifier field copied from the
- received Configure-Request, and the Options field filled with only
- the unacceptable Configuration Options from the Configure-Request.
- All acceptable Configuration Options are filtered out of the
- Configure-Nak, but otherwise the Configuration Options from the
- Configure-Request MUST NOT be reordered.
-
- Options which have no value fields (boolean options) MUST use the
-
-
-
-Simpson [Page 31]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Configure-Reject reply instead.
-
- Each Configuration Option which is allowed only a single instance
- MUST be modified to a value acceptable to the Configure-Nak
- sender. The default value MAY be used, when this differs from the
- requested value.
-
- When a particular type of Configuration Option can be listed more
- than once with different values, the Configure-Nak MUST include a
- list of all values for that option which are acceptable to the
- Configure-Nak sender. This includes acceptable values that were
- present in the Configure-Request.
-
- Finally, an implementation may be configured to request the
- negotiation of a specific Configuration Option. If that option is
- not listed, then that option MAY be appended to the list of Nak'd
- Configuration Options in order to prompt the peer to include that
- option in its next Configure-Request packet. Any value fields for
- the option MUST indicate values acceptable to the Configure-Nak
- sender.
-
- On reception of a Configure-Nak, the Identifier field MUST match
- that of the last transmitted Configure-Request. Invalid packets
- are silently discarded.
-
- Reception of a valid Configure-Nak indicates that a new
- Configure-Request MAY be sent with the Configuration Options
- modified as specified in the Configure-Nak. When multiple
- instances of a Configuration Option are present, the peer SHOULD
- select a single value to include in its next Configure-Request
- packet.
-
- Some Configuration Options have a variable length. Since the
- Nak'd Option has been modified by the peer, the implementation
- MUST be able to handle an Option length which is different from
- the original Configure-Request.
-
- A summary of the Configure-Nak packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options ...
- +-+-+-+-+
-
-
-
-
-Simpson [Page 32]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Code
-
- 3 for Configure-Nak.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Configure-Request which caused this Configure-Nak.
-
- Options
-
- The Options field is variable in length and contains the list of
- zero or more Configuration Options that the sender is Nak'ing.
- All Configuration Options are always Nak'd simultaneously.
-
-5.4 Configure-Reject
-
- Description
-
- If some Configuration Options received in a Configure-Request are
- not recognizable or are not acceptable for negotiation (as
- configured by a network administrator), then the implementation
- MUST transmit a LCP packet with the Code field set to 4
- (Configure-Reject), the Identifier field copied from the received
- Configure-Request, and the Options field filled with only the
- unacceptable Configuration Options from the Configure-Request.
- All recognizable and negotiable Configuration Options are filtered
- out of the Configure-Reject, but otherwise the Configuration
- Options MUST NOT be reordered or modified in any way.
-
- On reception of a Configure-Reject, the Identifier field MUST
- match that of the last transmitted Configure-Request.
- Additionally, the Configuration Options in a Configure-Reject MUST
- be a proper subset of those in the last transmitted Configure-
- Request. Invalid packets are silently discarded.
-
- Reception of a valid Configure-Reject indicates that a new
- Configure-Request SHOULD be sent which does not include any of the
- Configuration Options listed in the Configure-Reject.
-
- A summary of the Configure-Reject packet format is shown below. The
- fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-Simpson [Page 33]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options ...
- +-+-+-+-+
-
- Code
-
- 4 for Configure-Reject.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Configure-Request which caused this Configure-Reject.
-
- Options
-
- The Options field is variable in length and contains the list of
- zero or more Configuration Options that the sender is rejecting.
- All Configuration Options are always rejected simultaneously.
-
-5.5 Terminate-Request and Terminate-Ack
-
- Description
-
- LCP includes Terminate-Request and Terminate-Ack Codes in order to
- provide a mechanism for closing a connection.
-
- A LCP implementation wishing to close a connection SHOULD transmit
- a LCP packet with the Code field set to 5 (Terminate-Request), and
- the Data field filled with any desired data. Terminate-Request
- packets SHOULD continue to be sent until Terminate-Ack is
- received, the lower layer indicates that it has gone down, or a
- sufficiently large number have been transmitted such that the peer
- is down with reasonable certainty.
-
- Upon reception of a Terminate-Request, a LCP packet MUST be
- transmitted with the Code field set to 6 (Terminate-Ack), the
- Identifier field copied from the Terminate-Request packet, and the
- Data field filled with any desired data.
-
- Reception of an unelicited Terminate-Ack indicates that the peer
- is in the Closed or Stopped states, or is otherwise in need of
- re-negotiation.
-
- A summary of the Terminate-Request and Terminate-Ack packet formats
-
-
-
-Simpson [Page 34]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- is shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Code
-
- 5 for Terminate-Request;
-
- 6 for Terminate-Ack.
-
- Identifier
-
- On transmission, the Identifier field MUST be changed whenever the
- content of the Data field changes, and whenever a valid reply has
- been received for a previous request. For retransmissions, the
- Identifier MAY remain unchanged. On reception, the Identifier
- field of the Terminate-Request is copied into the Identifier field
- of the Terminate-Ack packet.
-
- Data
-
- The Data field is zero or more octets and contains uninterpreted
- data for use by the sender. The data may consist of any binary
- value and may be of any length from zero to the peer's established
- MRU minus four.
-
-
-5.6 Code-Reject
-
- Description
-
- Reception of a LCP packet with an unknown Code indicates that one
- of the communicating LCP implementations is faulty or incomplete.
- This error MUST be reported back to the sender of the unknown Code
- by transmitting a LCP packet with the Code field set to 7 (Code-
- Reject), and the inducing packet copied to the Rejected-
- Information field.
-
- Upon reception of a Code-Reject, the implementation SHOULD report
- the error, since it is unlikely that the situation can be
- rectified automatically.
-
-
-
-
-Simpson [Page 35]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- A summary of the Code-Reject packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Rejected-Packet ...
- +-+-+-+-+-+-+-+-+
-
- Code
-
- 7 for Code-Reject.
-
- Identifier
-
- The Identifier field MUST be changed for each Code-Reject sent.
-
- Rejected-Information
-
- The Rejected-Information field contains a copy of the LCP packet
- which is being rejected. It begins with the Information field,
- and does not include any Data Link Layer headers nor an FCS. The
- Rejected-Information MUST be truncated to comply with the peer's
- established MRU.
-
-
-5.7 Protocol-Reject
-
- Description
-
- Reception of a PPP packet with an unknown Protocol field indicates
- that the peer is attempting to use a protocol which is
- unsupported. This usually occurs when the peer attempts to
- configure a new protocol. If the LCP state machine is in the
- Opened state, then this error MUST be reported back to the peer by
- transmitting a LCP packet with the Code field set to 8 (Protocol-
- Reject), the Rejected-Protocol field set to the received Protocol,
- and the inducing packet copied to the Rejected-Information field.
-
- Upon reception of a Protocol-Reject, the implementation MUST stop
- sending packets of the indicated protocol at the earliest
- opportunity.
-
- Protocol-Reject packets can only be sent in the LCP Opened state.
- Protocol-Reject packets received in any state other than the LCP
- Opened state SHOULD be silently discarded.
-
-
-
-Simpson [Page 36]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- A summary of the Protocol-Reject packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Rejected-Protocol | Rejected-Information ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Code
-
- 8 for Protocol-Reject.
-
- Identifier
-
- The Identifier field MUST be changed for each Protocol-Reject
- sent.
-
- Rejected-Protocol
-
- The Rejected-Protocol field is two octets and contains the PPP
- Protocol field of the packet which is being rejected.
-
- Rejected-Information
-
- The Rejected-Information field contains a copy of the packet which
- is being rejected. It begins with the Information field, and does
- not include any Data Link Layer headers nor an FCS. The
- Rejected-Information MUST be truncated to comply with the peer's
- established MRU.
-
-5.8 Echo-Request and Echo-Reply
-
- Description
-
- LCP includes Echo-Request and Echo-Reply Codes in order to provide
- a Data Link Layer loopback mechanism for use in exercising both
- directions of the link. This is useful as an aid in debugging,
- link quality determination, performance testing, and for numerous
- other functions.
-
- An Echo-Request sender transmits a LCP packet with the Code field
- set to 9 (Echo-Request), the Identifier field set, the local
- Magic-Number (if any) inserted, and the Data field filled with any
- desired data, but not exceeding the peer's established MRU minus
- eight.
-
-
-
-Simpson [Page 37]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Upon reception of an Echo-Request, a LCP packet MUST be
- transmitted with the Code field set to 10 (Echo-Reply), the
- Identifier field copied from the received Echo-Request, the local
- Magic-Number (if any) inserted, and the Data field copied from the
- Echo-Request, truncating as necessary to avoid exceeding the
- peer's established MRU.
-
- Echo-Request and Echo-Reply packets may only be sent in the LCP
- Opened state. Echo-Request and Echo-Reply packets received in any
- state other than the LCP Opened state SHOULD be silently
- discarded.
-
- A summary of the Echo-Request and Echo-Reply packet formats is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic-Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Code
-
- 9 for Echo-Request;
-
- 10 for Echo-Reply.
-
- Identifier
-
- On transmission, the Identifier field MUST be changed whenever the
- content of the Data field changes, and whenever a valid reply has
- been received for a previous request. For retransmissions, the
- Identifier MAY remain unchanged.
-
- On reception, the Identifier field of the Echo-Request is copied
- into the Identifier field of the Echo-Reply packet.
-
- Magic-Number
-
- The Magic-Number field is four octets and aids in detecting links
- which are in the looped-back condition. Until the Magic-Number
- Configuration Option has been successfully negotiated, the Magic-
- Number MUST be transmitted as zero. See the Magic-Number
- Configuration Option for further explanation.
-
-
-
-Simpson [Page 38]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Data
-
- The Data field is zero or more octets and contains uninterpreted
- data for use by the sender. The data may consist of any binary
- value and may be of any length from zero to the peer's established
- MRU minus eight.
-
-5.9 Discard-Request
-
- Description
-
- LCP includes a Discard-Request Code in order to provide a Data
- Link Layer sink mechanism for use in exercising the local to
- remote direction of the link. This is useful as an aid in
- debugging, performance testing, and for numerous other functions.
-
- The sender transmits a LCP packet with the Code field set to 11
- (Discard-Request), the Identifier field set, the local Magic-
- Number (if any) inserted, and the Data field filled with any
- desired data, but not exceeding the peer's established MRU minus
- eight.
-
- Discard-Request packets may only be sent in the LCP Opened state.
- On reception, the receiver MUST simply throw away any Discard-
- Request that it receives.
-
- A summary of the Discard-Request packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic-Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
- Code
-
- 11 for Discard-Request.
-
- Identifier
-
- The Identifier field MUST be changed for each Discard-Request
- sent.
-
-
-
-Simpson [Page 39]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Magic-Number
-
- The Magic-Number field is four octets and aids in detecting links
- which are in the looped-back condition. Until the Magic-Number
- Configuration Option has been successfully negotiated, the Magic-
- Number MUST be transmitted as zero. See the Magic-Number
- Configuration Option for further explanation.
-
- Data
-
- The Data field is zero or more octets and contains uninterpreted
- data for use by the sender. The data may consist of any binary
- value and may be of any length from zero to the peer's established
- MRU minus four.
-
-6. LCP Configuration Options
-
- LCP Configuration Options allow negotiation of modifications to the
- default characteristics of a point-to-point link. If a Configuration
- Option is not included in a Configure-Request packet, the default
- value for that Configuration Option is assumed.
-
- Some Configuration Options MAY be listed more than once. The effect
- of this is Configuration Option specific, and is specified by each
- such Configuration Option description. (None of the Configuration
- Options in this specification can be listed more than once.)
-
- The end of the list of Configuration Options is indicated by the
- length of the LCP packet.
-
- Unless otherwise specified, all Configuration Options apply in a
- half-duplex fashion; typically, in the receive direction of the link
- from the point of view of the Configure-Request sender.
-
- A summary of the Configuration Option format is shown below. The
- fields are transmitted from left to right.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Data ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- The Type field is one octet and indicates the type of
- Configuration Option. Up-to-date values of the LCP Option Type
- field are specified in the most recent "Assigned Numbers" RFC [2].
-
-
-
-Simpson [Page 40]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- This specification concerns the following values:
-
- 1 Maximum-Receive-Unit
- 2 Async-Control-Character-Map
- 3 Authentication-Protocol
- 4 Quality-Protocol
- 5 Magic-Number
- 6 RESERVED
- 7 Protocol-Field-Compression
- 8 Address-and-Control-Field-Compression
-
- Length
-
- The Length field is one octet and indicates the length of this
- Configuration Option including the Type, Length and Data fields.
- If a negotiable Configuration Option is received in a Configure-
- Request but with an invalid Length, a Configure-Nak SHOULD be
- transmitted which includes the desired Configuration Option with
- an appropriate Length and Data.
-
- Data
-
- The Data field is zero or more octets and information specific to
- the Configuration Option. The format and length of the Data field
- is determined by the Type and Length fields.
-
-6.1 Maximum-Receive-Unit
-
- Description
-
- This Configuration Option may be sent to inform the peer that the
- implementation can receive larger packets, or to request that the
- peer send smaller packets.
-
- The default value is 1500 octets. If smaller packets are
- requested, an implementation MUST still be able to receive the
- full 1500 octet information field in case link synchronization is
- lost.
-
- Implementation Note:
-
- This option is used to indicate an implementation capability. The
- peer is not required to maximize the use of the capacity. For
- example, when a MRU is indicated which is 2048 octets, the peer is
- not required to send any packet with 2048 octets. The peer need
- not Configure-Nak to indicate that it will only send smaller
- packets, since the implementation will always require support for
- at least 1500 octets.
-
-
-
-Simpson [Page 41]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- A summary of the Maximum-Receive-Unit Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Maximum-Receive-Unit |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 1
-
- Length
-
- 4
-
- Maximum-Receive-Unit
-
- The Maximum-Receive-Unit field is two octets, and specifies the
- maximum number of octets in the Information and Padding fields.
- It does not include the framing, Protocol field, FCS, nor any
- transparency bits or bytes.
-
-6.2 Async-Control-Character-Map
-
- Description
-
- This Configuration Option provides a method to negotiate the use
- of control character transparency on asynchronous links.
-
- For asynchronous links, the default value is 0xffffffff, which
- causes all octets less than 0x20 to be mapped into an appropriate
- two octet sequence. For most other links, the default value is 0,
- since there is no need for mapping.
-
- However, it is rarely necessary to map all control characters, and
- often it is unnecessary to map any control characters. The
- Configuration Option is used to inform the peer which control
- characters MUST remain mapped when the peer sends them.
-
- The peer MAY still send any other octets in mapped format, if it
- is necessary because of constraints known to the peer. The peer
- SHOULD Configure-Nak with the logical union of the sets of mapped
- octets, so that when such octets are spuriously introduced they
- can be ignored on receipt.
-
-
-
-
-Simpson [Page 42]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- A summary of the Async-Control-Character-Map Configuration Option
- format is shown below. The fields are transmitted from left to
- right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Async-Control-Character-Map
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ACCM (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 2
-
- Length
-
- 6
-
- Async-Control-Character-Map
-
- The Async-Control-Character-Map field is four octets and indicates
- the set of control characters to be mapped. The map is sent most
- significant octet first.
-
- Each numbered bit corresponds to the octet of the same value. If
- the bit is cleared to zero, then that octet need not be mapped.
- If the bit is set to one, then that octet MUST remain mapped. For
- example, if bit 19 is set to zero, then the ASCII control
- character 19 (DC3, Control-S) MAY be sent in the clear.
-
- Note: The least significant bit of the least significant octet
- (the final octet transmitted) is numbered bit 0, and would map
- to the ASCII control character NUL.
-
-6.3 Authentication-Protocol
-
- Description
-
- On some links it may be desirable to require a peer to
- authenticate itself before allowing network-layer protocol packets
- to be exchanged.
-
- This Configuration Option provides a method to negotiate the use
- of a specific authentication protocol. By default, authentication
- is not required.
-
-
-
-
-Simpson [Page 43]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- An implementation MUST NOT include multiple Authentication-
- Protocol Configuration Options in its Configure-Request packets.
- Instead, it SHOULD attempt to configure the most desirable
- protocol first. If that protocol is Configure-Nak'd, then the
- implementation SHOULD attempt the next most desirable protocol in
- the next Configure-Request.
-
- If an implementation sends a Configure-Ack with this Configuration
- Option, then it is agreeing to authenticate with the specified
- protocol. An implementation receiving a Configure-Ack with this
- Configuration Option SHOULD expect the peer to authenticate with
- the acknowledged protocol.
-
- There is no requirement that authentication be full duplex or that
- the same protocol be used in both directions. It is perfectly
- acceptable for different protocols to be used in each direction.
- This will, of course, depend on the specific protocols negotiated.
-
- A summary of the Authentication-Protocol Configuration Option format
- is shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Authentication-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Type
-
- 3
-
- Length
-
- >= 4
-
- Authentication-Protocol
-
- The Authentication-Protocol field is two octets and indicates the
- authentication protocol desired. Values for this field are always
- the same as the PPP Protocol field values for that same
- authentication protocol.
-
- Up-to-date values of the Authentication-Protocol field are
- specified in the most recent "Assigned Numbers" RFC [2]. Current
- values are assigned as follows:
-
-
-
-
-Simpson [Page 44]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Value (in hex) Protocol
-
- c023 Password Authentication Protocol
- c223 Challenge Handshake Authentication Protocol
-
- Data
-
- The Data field is zero or more octets and contains additional data
- as determined by the particular protocol.
-
-6.4 Quality-Protocol
-
- Description
-
- On some links it may be desirable to determine when, and how
- often, the link is dropping data. This process is called link
- quality monitoring.
-
- This Configuration Option provides a method to negotiate the use
- of a specific protocol for link quality monitoring. By default,
- link quality monitoring is disabled.
-
- There is no requirement that quality monitoring be full duplex or
- that the same protocol be used in both directions. It is
- perfectly acceptable for different protocols to be used in each
- direction. This will, of course, depend on the specific protocols
- negotiated.
-
- A summary of the Quality-Protocol Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Quality-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Type
-
- 4
-
- Length
-
- >= 4
-
-
-
-
-
-Simpson [Page 45]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Quality-Protocol
-
- The Quality-Protocol field is two octets and indicates the link
- quality monitoring protocol desired. Values for this field are
- always the same as the PPP Protocol field values for that same
- monitoring protocol.
-
- Up-to-date values of the Quality-Protocol field are specified in
- the most recent "Assigned Numbers" RFC [2]. Current values are
- assigned as follows:
-
- Value (in hex) Protocol
-
- c025 Link Quality Report
-
- Data
-
- The Data field is zero or more octets and contains additional data
- as determined by the particular protocol.
-
-6.5 Magic-Number
-
- Description
-
- This Configuration Option provides a method to detect looped-back
- links and other Data Link Layer anomalies. This Configuration
- Option MAY be required by some other Configuration Options such as
- the Quality-Protocol Configuration Option. By default, the
- Magic-Number is not negotiated, and zero is inserted where a
- Magic-Number might otherwise be used.
-
- Before this Configuration Option is requested, an implementation
- MUST choose its Magic-Number. It is recommended that the Magic-
- Number be chosen in the most random manner possible in order to
- guarantee with very high probability that an implementation will
- arrive at a unique number. A good way to choose a unique random
- number is to start with an unique seed. Suggested sources of
- uniqueness include machine serial numbers, other network hardware
- addresses, time-of-day clocks, etc. Particularly good random
- number seeds are precise measurements of the inter-arrival time of
- physical events such as packet reception on other connected
- networks, server response time, or the typing rate of a human
- user. It is also suggested that as many sources as possible be
- used simultaneously.
-
- When a Configure-Request is received with a Magic-Number
- Configuration Option, the received Magic-Number is compared with
- the Magic-Number of the last Configure-Request sent to the peer.
-
-
-
-Simpson [Page 46]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- If the two Magic-Numbers are different, then the link is not
- looped-back, and the Magic-Number SHOULD be acknowledged. If the
- two Magic-Numbers are equal, then it is possible, but not certain,
- that the link is looped-back and that this Configure-Request is
- actually the one last sent. To determine this, a Configure-Nak
- MUST be sent specifying a different Magic-Number value. A new
- Configure-Request SHOULD NOT be sent to the peer until normal
- processing would cause it to be sent (that is, until a Configure-
- Nak is received or the Restart timer runs out).
-
- Reception of a Configure-Nak with a Magic-Number different from
- that of the last Configure-Nak sent to the peer proves that a link
- is not looped-back, and indicates a unique Magic-Number. If the
- Magic-Number is equal to the one sent in the last Configure-Nak,
- the possibility of a looped-back link is increased, and a new
- Magic-Number MUST be chosen. In either case, a new Configure-
- Request SHOULD be sent with the new Magic-Number.
-
- If the link is indeed looped-back, this sequence (transmit
- Configure-Request, receive Configure-Request, transmit Configure-
- Nak, receive Configure-Nak) will repeat over and over again. If
- the link is not looped-back, this sequence might occur a few
- times, but it is extremely unlikely to occur repeatedly. More
- likely, the Magic-Numbers chosen at either end will quickly
- diverge, terminating the sequence. The following table shows the
- probability of collisions assuming that both ends of the link
- select Magic-Numbers with a perfectly uniform distribution:
-
- Number of Collisions Probability
- -------------------- ---------------------
- 1 1/2**32 = 2.3 E-10
- 2 1/2**32**2 = 5.4 E-20
- 3 1/2**32**3 = 1.3 E-29
-
- Good sources of uniqueness or randomness are required for this
- divergence to occur. If a good source of uniqueness cannot be
- found, it is recommended that this Configuration Option not be
- enabled; Configure-Requests with the option SHOULD NOT be
- transmitted and any Magic-Number Configuration Options which the
- peer sends SHOULD be either acknowledged or rejected. In this
- case, loop-backs cannot be reliably detected by the
- implementation, although they may still be detectable by the peer.
-
- If an implementation does transmit a Configure-Request with a
- Magic-Number Configuration Option, then it MUST NOT respond with a
- Configure-Reject if it receives a Configure-Request with a Magic-
- Number Configuration Option. That is, if an implementation
- desires to use Magic Numbers, then it MUST also allow its peer to
-
-
-
-Simpson [Page 47]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- do so. If an implementation does receive a Configure-Reject in
- response to a Configure-Request, it can only mean that the link is
- not looped-back, and that its peer will not be using Magic-
- Numbers. In this case, an implementation SHOULD act as if the
- negotiation had been successful (as if it had instead received a
- Configure-Ack).
-
- The Magic-Number also may be used to detect looped-back links
- during normal operation as well as during Configuration Option
- negotiation. All LCP Echo-Request, Echo-Reply, and Discard-
- Request packets have a Magic-Number field. If Magic-Number has
- been successfully negotiated, an implementation MUST transmit
- these packets with the Magic-Number field set to its negotiated
- Magic-Number.
-
- The Magic-Number field of these packets SHOULD be inspected on
- reception. All received Magic-Number fields MUST be equal to
- either zero or the peer's unique Magic-Number, depending on
- whether or not the peer negotiated a Magic-Number. Reception of a
- Magic-Number field equal to the negotiated local Magic-Number
- indicates a looped-back link. Reception of a Magic- Number other
- than the negotiated local Magic-Number or the peer's negotiated
- Magic-Number, or zero if the peer didn't negotiate one, indicates
- a link which has been (mis)configured for communications with a
- different peer.
-
- Procedures for recovery from either case are unspecified and may
- vary from implementation to implementation. A somewhat
- pessimistic procedure is to assume a LCP Down event. A further
- Open event will begin the process of re-establishing the link,
- which can't complete until the loop-back condition is terminated
- and Magic-Numbers are successfully negotiated. A more optimistic
- procedure (in the case of a loop-back) is to begin transmitting
- LCP Echo-Request packets until an appropriate Echo-Reply is
- received, indicating a termination of the loop-back condition.
-
- A summary of the Magic-Number Configuration Option format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Magic-Number
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic-Number (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-Simpson [Page 48]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Type
-
- 5
-
- Length
-
- 6
-
- Magic-Number
-
- The Magic-Number field is four octets and indicates a number which
- is very likely to be unique to one end of the link. A Magic-
- Number of zero is illegal and MUST always be Nak'd, if it is not
- Rejected outright.
-
-6.6 Protocol-Field-Compression
-
- Description
-
- This Configuration Option provides a method to negotiate the
- compression of the PPP Protocol field. By default, all
- implementations MUST transmit packets with two octet PPP Protocol
- fields.
-
- PPP Protocol field numbers are chosen such that some values may be
- compressed into a single octet form which is clearly
- distinguishable from the two octet form. This Configuration
- Option is sent to inform the peer that the implementation can
- receive such single octet Protocol fields.
-
- As previously mentioned, the Protocol field uses an extension
- mechanism consistent with the ISO 3309 extension mechanism for the
- Address field; the Least Significant Bit (LSB) of each octet is
- used to indicate extension of the Protocol field. A binary "0" as
- the LSB indicates that the Protocol field continues with the
- following octet. The presence of a binary "1" as the LSB marks
- the last octet of the Protocol field. Notice that any number of
- "0" octets may be prepended to the field, and will still indicate
- the same value (consider the two binary representations for 3,
- 00000011 and 00000000 00000011).
-
- When using low speed links, it is desirable to conserve bandwidth
- by sending as little redundant data as possible. The Protocol-
- Field-Compression Configuration Option allows a trade-off between
- implementation simplicity and bandwidth efficiency. If
- successfully negotiated, the ISO 3309 extension mechanism may be
- used to compress the Protocol field to one octet instead of two.
- The large majority of packets are compressible since data
-
-
-
-Simpson [Page 49]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- protocols are typically assigned with Protocol field values less
- than 256.
-
- Compressed Protocol fields MUST NOT be transmitted unless this
- Configuration Option has been negotiated. When negotiated, PPP
- implementations MUST accept PPP packets with either double-octet
- or single-octet Protocol fields, and MUST NOT distinguish between
- them.
-
- The Protocol field is never compressed when sending any LCP
- packet. This rule guarantees unambiguous recognition of LCP
- packets.
-
- When a Protocol field is compressed, the Data Link Layer FCS field
- is calculated on the compressed frame, not the original
- uncompressed frame.
-
- A summary of the Protocol-Field-Compression Configuration Option
- format is shown below. The fields are transmitted from left to
- right.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 7
-
- Length
-
- 2
-
-6.7 Address-and-Control-Field-Compression
-
- Description
-
- This Configuration Option provides a method to negotiate the
- compression of the Data Link Layer Address and Control fields. By
- default, all implementations MUST transmit frames with Address and
- Control fields appropriate to the link framing.
-
- Since these fields usually have constant values for point-to-point
- links, they are easily compressed. This Configuration Option is
- sent to inform the peer that the implementation can receive
- compressed Address and Control fields.
-
-
-
-Simpson [Page 50]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- If a compressed frame is received when Address-and-Control-Field-
- Compression has not been negotiated, the implementation MAY
- silently discard the frame.
-
- The Address and Control fields MUST NOT be compressed when sending
- any LCP packet. This rule guarantees unambiguous recognition of
- LCP packets.
-
- When the Address and Control fields are compressed, the Data Link
- Layer FCS field is calculated on the compressed frame, not the
- original uncompressed frame.
-
- A summary of the Address-and-Control-Field-Compression configuration
- option format is shown below. The fields are transmitted from left
- to right.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 8
-
- Length
-
- 2
-
-A. LCP Recommended Options
-
- The following Configurations Options are recommended:
-
- SYNC LINES
-
- Magic Number Link Quality Monitoring No Address and Control Field
- Compression No Protocol Field Compression
-
- ASYNC LINES
-
- Async Control Character Map Magic Number Address and Control Field
- Compression Protocol Field Compression
-
-Security Considerations
-
- Security issues are briefly discussed in sections concerning the
- Authentication Phase, the Close event, and the Authentication-
-
-
-
-Simpson [Page 51]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
- Protocol Configuration Option. Further discussion is in a companion
- document entitled PPP Authentication Protocols.
-
-
-References
-
- [1] Perkins, D., "Requirements for an Internet Standard
- Point-to-Point Protocol", RFC 1547, December 1993.
-
- [2] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340,
- USC/Information Sciences Institute, July 1992.
-
-Acknowledgments
-
- Much of the text in this document is taken from the WG Requirements,
- and RFCs 1171 & 1172, by Drew Perkins of Carnegie Mellon University,
- and by Russ Hobby of the University of California at Davis.
-
- Many people spent significant time helping to develop the Point-to-
- Point Protocol. The complete list of people is too numerous to list,
- but the following people deserve special thanks: Rick Adams (UUNET),
- Ken Adelman (TGV), Fred Baker (ACC), Mike Ballard (Telebit), Craig
- Fox (Network Systems), Karl Fox (Morning Star Technologies), Phill
- Gross (AN&S), former WG chair Russ Hobby (UC Davis), David Kaufman
- (Proteon), former WG chair Steve Knowles (FTP Software), former WG
- chair Brian Lloyd (L&A), John LoVerso (Xylogics), Bill Melohn (Sun
- Microsystems), Mike Patton (MIT), former WG chair Drew Perkins
- (Fore), Greg Satz (cisco systems), John Shriver (Proteon), Vernon
- Schryver (Silicon Graphics), and Asher Waldfogel (Wellfleet).
-
- The "Day in the Life" example was instigated by Kory Hamzeh (Avatar).
- In this version, improvements in wording were also provided by Scott
- Ginsburg, Mark Moraes, and Timon Sloan, as they worked on
- implementations.
-
- Special thanks to Morning Star Technologies for providing computing
- resources and network access support for writing this specification.
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Fred Baker
- Advanced Computer Communications
- 315 Bollay Drive
- Santa Barbara, California, 93111
-
- EMail: fbaker@acc.com
-
-
-
-Simpson [Page 52]
-
-RFC 1548 The Point-to-Point Protocol December 1993
-
-
-Editor's Address
-
- Questions about this memo can also be directed to:
-
- William Allen Simpson
- Daydreamer
- Computer Systems Consulting Services
- 1384 Fontaine
- Madison Heights, Michigan 48071
-
- EMail: Bill.Simpson@um.cc.umich.edu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 53]
-
diff --git a/doc/rfc1570.txt b/doc/rfc1570.txt
deleted file mode 100644
index edda5d9..0000000
--- a/doc/rfc1570.txt
+++ /dev/null
@@ -1,1057 +0,0 @@
-
-
-
-
-
-
-Network Working Group W. Simpson, Editor
-Request for Comments: 1570 Daydreamer
-Updates: 1548 January 1994
-Category: Standards Track
-
-
- PPP LCP Extensions
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method for
- transporting multi-protocol datagrams over point-to-point links. PPP
- defines an extensible Link Control Protocol (LCP) for establishing,
- configuring, and testing the data-link connection. This document
- defines several additional LCP features which have been suggested
- over the past few years.
-
- This document is the product of the Point-to-Point Protocol Working
- Group of the Internet Engineering Task Force (IETF). Comments should
- be submitted to the ietf-ppp@ucdavis.edu mailing list.
-
-Table of Contents
-
- 1. Additional LCP Packets ................................ 1
- 1.1 Identification .................................. 1
- 1.2 Time-Remaining .................................. 3
- 2. Additional LCP Configuration Options .................. 6
- 2.1 FCS-Alternatives ................................ 6
- 2.1.1 LCP considerations .............................. 7
- 2.1.2 Null FCS ........................................ 8
- 2.2 Self-Describing-Padding ......................... 9
- 2.3 Callback ........................................ 11
- 2.4 Compound-Frames ................................. 12
- 2.4.1 LCP considerations .............................. 14
- APPENDICES ................................................... 15
- A. Fast Frame Check Sequence (FCS) Implementation ........ 15
- A.1 32-bit FCS Computation Method ................... 15
- SECURITY CONSIDERATIONS ...................................... 17
- REFERENCES ................................................... 17
- ACKNOWLEDGEMENTS ............................................. 18
- CHAIR'S ADDRESS .............................................. 18
- EDITOR'S ADDRESS ............................................. 18
-
-
-
-
-
-
-
-
-Simpson [Page i]
- RFC 1570 PPP LCP extensions January 1994
-
-
-1. Additional LCP Packets
-
- The Packet format and basic facilities are already defined for LCP
- [1].
-
- Up-to-date values of the LCP Code field are specified in the most
- recent "Assigned Numbers" RFC [2]. This specification concerns the
- following values:
-
- 12 Identification
- 13 Time-Remaining
-
-
-
-
-1.1. Identification
-
- Description
-
- This Code provides a method for an implementation to identify
- itself to its peer. This Code might be used for many diverse
- purposes, such as link troubleshooting, license enforcement, etc.
-
- Identification is a Link Maintenance packet. Identification
- packets MAY be sent at any time, including before LCP has reached
- the Opened state.
-
- The sender transmits a LCP packet with the Code field set to 12
- (Identification), the Identifier field set, the local Magic-Number
- (if any) inserted, and the Message field filled with any desired
- data, but not exceeding the default MRU minus eight.
-
- Receipt of an Identification packet causes the RXR or RUC event.
- There is no response to the Identification packet.
-
- Receipt of a Code-Reject for the Identification packet SHOULD
- generate the RXJ+ (permitted) event.
-
- Rationale:
-
- This feature is defined as part of LCP, rather than as a
- separate PPP Protocol, in order that its benefits may be
- available during the earliest possible stage of the Link
- Establishment phase. It allows an operator to learn the
- identification of the peer even when negotiation is not
- converging. Non-LCP packets cannot be sent during the Link
- Establishment phase.
-
-
-
-
-Simpson [Page 1]
- RFC 1570 PPP LCP extensions January 1994
-
-
- This feature is defined as a separate LCP Code, rather than a
- Configuration-Option, so that the peer need not include it with
- other items in configuration packet exchanges, and handle
- "corrected" values or "rejection", since its generation is both
- rare and in one direction. It is recommended that
- Identification packets be sent whenever a Configure-Reject is
- sent or received, as a final message when negotiation fails to
- converge, and when LCP reaches the Opened state.
-
- A summary of the Identification packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic-Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Message ...
- +-+-+-+-+-+-+-+-+
-
-
- Code
-
- 12 for Identification
-
- Identifier
-
- The Identifier field MUST be changed for each Identification sent.
-
- Length
-
- >= 8
-
- Magic-Number
-
- The Magic-Number field is four octets and aids in detecting links
- which are in the looped-back condition. Until the Magic-Number
- Configuration Option has been successfully negotiated, the Magic-
- Number MUST be transmitted as zero. See the Magic-Number
- Configuration Option for further explanation.
-
- Message
-
- The Message field is zero or more octets, and its contents are
- implementation dependent. It is intended to be human readable,
- and MUST NOT affect operation of the protocol. It is recommended
-
-
-
-Simpson [Page 2]
- RFC 1570 PPP LCP extensions January 1994
-
-
- that the message contain displayable ASCII characters 32 through
- 126 decimal. Mechanisms for extension to other character sets are
- the topic of future research. The size is determined from the
- Length field.
-
- Implementation Note:
-
- The Message will usually contain such things as the sender's
- hardware type, PPP software revision level, and PPP product
- serial number, MIB information such as link speed and interface
- name, and any other information that the sender thinks might be
- useful in debugging connections. The format is likely to be
- different for each implementor, so that those doing serial
- number tracking can validate their numbers. A robust
- implementation SHOULD treat the Message as displayable text,
- and SHOULD be able to receive and display a very long Message.
-
-
-
-1.2. Time-Remaining
-
- Description
-
- This Code provides a mechanism for notifying the peer of the time
- remaining in this session.
-
- The nature of this information is advisory only. It is intended
- that only one side of the connection will send this packet
- (generally a "network access server"). The session is actually
- concluded by the Terminate-Request packet.
-
- Time-Remaining is a Link Maintenance packet. Time-Remaining
- packets may only be sent in the LCP Opened state.
-
- The sender transmits a LCP packet with the Code field set to 13
- (Time-Remaining), the Identifier field set, the local Magic-Number
- (if any) inserted, and the Message field filled with any desired
- data, but not exceeding the peer's established MRU minus twelve.
-
- Receipt of an Time-Remaining packet causes the RXR or RUC event.
- There is no response to the Time-Remaining packet.
-
- Receipt of a Code-Reject for the Time-Remaining packet SHOULD
- generate the RXJ+ (permitted) event.
-
- Rationale:
-
- This notification is defined as a separate LCP Code, rather
-
-
-
-Simpson [Page 3]
- RFC 1570 PPP LCP extensions January 1994
-
-
- than a Configuration-Option, in order that changes and warning
- messages may occur dynamically during the session, and that the
- information might be determined after Authentication has
- occurred. Typically, this packet is sent when the link enters
- Network-Layer Protocol phase, and at regular intervals
- throughout the session, particularly near the end of the
- session.
-
- A summary of the Time-Remaining packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic-Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Seconds-Remaining |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Message ...
- +-+-+-+-+-+-+-+-+
-
-
- Code
-
- 13 for Time-Remaining
-
- Identifier
-
- The Identifier field MUST be changed for each Time-Remaining sent.
-
- Length
-
- >= 12
-
- Magic-Number
-
- The Magic-Number field is four octets and aids in detecting links
- which are in the looped-back condition. Until the Magic-Number
- Configuration Option has been successfully negotiated, the Magic-
- Number MUST be transmitted as zero. See the Magic-Number
- Configuration Option for further explanation.
-
- Seconds-Remaining
-
- The Seconds-Remaining field is four octets and indicates the
- number of integral seconds remaining in this session. This 32 bit
-
-
-
-Simpson [Page 4]
- RFC 1570 PPP LCP extensions January 1994
-
-
- unsigned value is sent most significant octet first. A value of
- 0xffffffff (all ones) represents no timeout, or "forever".
-
- Message
-
- The Message field is zero or more octets, and its contents are
- implementation dependent. It is intended to be human readable,
- and MUST NOT affect operation of the protocol. It is recommended
- that the message contain displayable ASCII characters 32 through
- 126 decimal. Mechanisms for extension to other character sets are
- the topic of future research. The size is determined from the
- Length field.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 5]
- RFC 1570 PPP LCP extensions January 1994
-
-
-2. Additional LCP Configuration Options
-
- The Configuration Option format and basic options are already defined
- for LCP [1].
-
- Up-to-date values of the LCP Option Type field are specified in the
- most recent "Assigned Numbers" RFC [2]. This document concerns the
- following values:
-
- 9 FCS-Alternatives
- 10 Self-Describing-Padding
- 13 Callback
- 15 Compound-Frames
-
-
-
-
-2.1. FCS-Alternatives
-
- Description
-
- This Configuration Option provides a method for an implementation
- to specify another FCS format to be sent by the peer, or to
- negotiate away the FCS altogether.
-
- This option is negotiated separately in each direction. However,
- it is not required that an implementation be capable of
- concurrently generating a different FCS on each side of the link.
-
- The negotiated FCS values take effect only during Authentication
- and Network-Layer Protocol phases. Frames sent during any other
- phase MUST contain the default FCS.
-
- A summary of the FCS-Alternatives Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Options |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 9
-
-
-
-
-
-Simpson [Page 6]
- RFC 1570 PPP LCP extensions January 1994
-
-
- Length
-
- 3
-
- Options
-
- This field is one octet, and is comprised of the "logical or" of
- the following values:
-
- 1 Null FCS
- 2 CCITT 16-bit FCS
- 4 CCITT 32-bit FCS
-
-
- Implementation Note:
-
- For most PPP HDLC framed links, the default FCS is the CCITT 16-
- bit FCS. Some framing techniques and high speed links may use
- another format as the default FCS.
-
-
-2.1.1. LCP considerations
-
- The link can be subject to loss of state, and the LCP can re-
- negotiate at any time. When the LCP begins renegotiation or
- termination, it is recommended that the LCP Configure-Request or
- Terminate-Request packet be sent with the last negotiated FCS, then
- change to the default FCS, and a duplicate LCP packet is sent with
- the default FCS. The Identifier field SHOULD NOT be incremented for
- each such duplicate packet.
-
- On receipt of a LCP Configure-Request or Terminate-Request packet,
- the implementation MUST change to the default FCS for both
- transmission and reception. If a Request packet is received which
- contains a duplicate Identifier field, a new reply MUST be generated.
-
- Implementation Notes:
-
- The need to send two packets is only necessary after the
- Alternative-FCS has already been negotiated. It need not occur
- during state transitions when there is a natural indication that
- the default FCS is in effect, such as the Down and Up events. It
- is necessary to send two packets in the Ack-Sent and Opened
- states, since the peer could mistakenly believe that the link has
- Opened.
-
- It is possible to send a single 48-bit FCS which is a combination
- of the 16-bit and 32-bit FCS. This may be sent instead of sending
-
-
-
-Simpson [Page 7]
- RFC 1570 PPP LCP extensions January 1994
-
-
- the two packets described above. We have not standardized this
- procedure because of intellectual property concerns. If such a
- 48-bit FCS is used, it MUST only be used for LCP packets.
-
-
-2.1.2. Null FCS
-
- The Null FCS SHOULD only be used for those network-layer and
- transport protocols which have an end-to-end checksum available, such
- as TCP/IP, or UDP/IP with the checksum enabled. That is, the Null
- FCS option SHOULD be negotiated together with another non-null FCS
- option in a heterogeneous environment.
-
- When a configuration (LCP or NCP) or authentication packet is sent,
- the FCS MUST be included. When a configuration (LCP or NCP) or
- authentication packet is received, the FCS MUST be verified.
-
- There are several cases to be considered:
-
- Null FCS alone
-
- The sender generates the FCS for those frames which require the
- FCS before sending the frame.
-
- When a frame is received, it is not necessary to check the FCS
- before demultiplexing. Any FCS is treated as padding.
-
- Receipt of an Authentication or Control packet would be discovered
- after passing the frame to the demultiplexer. Verification of the
- FCS can easily be accomplished using one of the software
- algorithms defined in "PPP in HDLC Framing" [3] (16-bit FCS) and
- Appendix A (32-bit FCS).
-
- Null FCS with another FCS, using software
-
- This is similar to the above case.
-
- Those packets which are required to have the FCS (Authentication,
- Control, or Network-Protocols lacking a checksum) are checked
- using software after demultiplexing. Packets which fail the FCS
- test are discarded as usual.
-
- Null FCS with another FCS, using hardware
-
- A flag is passed with the frame, indicating whether or not it has
- passed the hardware FCS check. The incorrect FCS MUST be passed
- with the rest of the data. The frame MUST NOT be discarded until
- after demultiplexing, and only those frames that require the FCS
-
-
-
-Simpson [Page 8]
- RFC 1570 PPP LCP extensions January 1994
-
-
- are discarded.
-
- All three FCS forms (Null, 16 and 32) may be used concurrently on
- different frames when using software. That is probably not possible
- with most current hardware.
-
-
-
-2.2. Self-Describing-Padding
-
- Description
-
- This Configuration Option provides a method for an implementation
- to indicate to the peer that it understands self-describing pads
- when padding is added at the end of the PPP Information field.
-
- This option is most likely to be used when some protocols, such as
- network-layer or compression protocols, are configured which
- require detection and removal of any trailing padding. Such
- special protocols are identified in their respective documents.
-
- If the option is Rejected, the peer MUST NOT add any padding to
- the identified special protocols, but MAY add padding to other
- protocols.
-
- If the option is Ack'd, the peer MUST follow the procedures for
- adding self-describing pads, but only to the specifically
- identified protocols. The peer is not required to add any padding
- to other protocols.
-
- Implementation Notes:
-
- This is defined so that the Reject handles either case where
- the peer does not generate self-describing pads. When the peer
- never generates padding, it may safely Reject the option. When
- the peer does not understand the option, it also will not
- successfully configure a special protocol which requires
- elimination of pads.
-
- While some senders might only be capable of adding padding to
- every protocol or not adding padding to any protocol, by design
- the receiver need not examine those protocols which do not need
- the padding stripped.
-
- To avoid unnecessary configuration handshakes, an
- implementation which generates padding, and has a protocol
- configured which requires the padding to be known, SHOULD
- include this Option in its Configure-Request, and SHOULD
-
-
-
-Simpson [Page 9]
- RFC 1570 PPP LCP extensions January 1994
-
-
- Configure-Nak with this Option when it is not present in the
- peer's Request.
-
- Each octet of self-describing pad contains the index of that
- octet. The first pad octet MUST contain the value one (1), which
- indicates the Padding Protocol to the Compound-Frames option.
- After removing the FCS, the final pad octet indicates the number
- of pad octets to remove. For example, three pad octets would
- contain the values 1, 2, 3.
-
- The Maximum-Pad-Value (MPV) is also negotiated. Only the values 1
- through MPV are used. When no padding would otherwise be
- required, but the final octet of the PPP Information field
- contains the value 1 through MPV, at least one self-describing pad
- octet MUST be added to the frame. If the final octet is greater
- than MPV, no additional padding is required.
-
- Implementation Notes:
-
- If any of the pad octets contain an incorrect index value, the
- entire frame SHOULD be silently discarded. This is intended to
- prevent confusion with the FCS-Alternatives option, but might
- not be necessary in robust implementations.
-
- Since this option is intended to support compression protocols,
- the Maximum-Pad-Value is specified to limit the likelihood that
- a frame may actually become longer.
-
- A summary of the Self-Describing-Padding Configuration Option format
- is shown below. The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Maximum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 10
-
- Length
-
- 3
-
-
-
-
-
-
-Simpson [Page 10]
- RFC 1570 PPP LCP extensions January 1994
-
-
- Maximum
-
- This field specifies the largest number of padding octets which
- may be added to the frame. The value may range from 1 to 255, but
- values of 2, 4, or 8 are most likely.
-
-
-
-2.3. Callback
-
- Description
-
- This Configuration Option provides a method for an implementation
- to request a dial-up peer to call back. This option might be used
- for many diverse purposes, such as savings on toll charges.
-
- When Callback is successfully negotiated, and authentication is
- complete, the Authentication phase proceeds directly to the
- Termination phase, and the link is disconnected.
-
- Then, the peer re-establishes the link, without negotiating
- Callback.
-
- Implementation Notes:
-
- A peer which agrees to this option SHOULD request the
- Authentication-Protocol Configuration Option. The user
- information learned during authentication can be used to
- determine the user location, or to limit a user to certain
- locations, or merely to determine whom to bill for the service.
-
- Authentication SHOULD be requested in turn by the
- implementation when it is called back, if mutual authentication
- is desired.
-
- A summary of the Callback Option format is shown below. The fields
- are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Operation | Message ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 13
-
-
-
-Simpson [Page 11]
- RFC 1570 PPP LCP extensions January 1994
-
-
- Length
-
- >= 3
-
- Operation
-
- The Operation field is one octet and indicates the contents of the
- Message field.
-
- 0 location is determined by user authentication
-
- 1 Dialing string, the format and contents of which assumes
- configuration knowledge of the specific device which is
- making the callback.
-
- 2 Location identifier, which may or may not be human
- readable, to be used together with the authentication
- information for a database lookup to determine the
- callback location.
-
- 3 E.164 number.
-
- 4 Distinguished name.
-
- Message
-
- The Message field is zero or more octets, and its general contents
- are determined by the Operation field. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
- The size is determined from the Length field.
-
- It is intended that only an authorized user will have correct site
- specific information to make use of the Callback. The
- codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-
-
-2.4. Compound-Frames
-
- Description
-
- This Configuration Option provides a method for an implementation
- to send multiple PPP encapsulated packets within the same frame.
- This option might be used for many diverse purposes, such as
- savings on toll charges.
-
-
-
-
-Simpson [Page 12]
- RFC 1570 PPP LCP extensions January 1994
-
-
- Only those PPP Protocols which have determinate lengths or
- integral length fields may be aggregated into a compound frame.
-
- When Compound-Frames is successfully negotiated, the sender MAY
- add additional packets to the same frame. Each packet is
- immediately followed by another Protocol field, with its attendant
- datagram.
-
- When padding is added to the end of the Information field, the
- procedure described in Self-Describing-Padding is used.
- Therefore, this option MUST be negotiated together with the Self-
- Describing-Padding option.
-
- If the FCS-Alternatives option has been negotiated, self
- describing padding MUST always be added. That is, the final
- packet MUST be followed by a series of octets, the first of which
- contains the value one (1).
-
- On receipt, the first Protocol field is examined, and the packet
- is processed as usual. For those datagrams which have a
- determinate length, the remainder of the frame is returned to the
- demultiplexor. Each succeeding Protocol field is processed as a
- separate packet. This processing is complete when a packet is
- processed which does not have a determinate length, when the
- remainder of the frame is empty, or when the Protocol field is
- determined to have a value of one (1).
-
- The PPP Protocol value of one (1) is reserved as the Padding
- Protocol. Any following octets are removed as padding.
-
- A summary of the Compound-Frames Option format is shown below. The
- fields are transmitted from left to right.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 15
-
- Length
-
- 2
-
-
-
-
-Simpson [Page 13]
- RFC 1570 PPP LCP extensions January 1994
-
-
-2.4.1. LCP considerations
-
- During initial negotiation, the Compound-Frames option can be used to
- minimize the negotiation latency, by reducing the number of frames
- exchanged.
-
- The first LCP Configure-Request packet is sent as usual in a single
- frame, including the Self-Describing-Padding and Compound-Frames
- options.
-
- The peer SHOULD respond with a Configure-Ack, followed in a compound
- frame by its LCP Configure-Request, and any NCP Configure-Requests
- desired.
-
- Upon receipt, the local implementation SHOULD process the Configure-
- Ack as usual. Since the peer has agreed to send compound frames, the
- implementation MUST examine the remainder of the frame for additional
- packets. If the peer also specified the Self-Describing-Padding and
- Compound-Frames options in its Configure-Request, the local
- implementation SHOULD retain its Configure-Ack, and further NCP
- configuration packets SHOULD be added to the return frame.
-
- Together with the peer's final return frame, the minimum number of
- frames to complete configuration is 4.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 14]
- RFC 1570 PPP LCP extensions January 1994
-
-
-A. Fast Frame Check Sequence (FCS) Implementation
-
-A.1. 32-bit FCS Computation Method
-
- The following code provides a table lookup computation for
- calculating the 32-bit Frame Check Sequence as data arrives at the
- interface.
-
- /*
- * u32 represents an unsigned 32-bit number. Adjust the typedef for
- * your hardware.
- */
- typedef unsigned long u32;
-
- static u32 fcstab_32[256] =
- {
- 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
- 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
- 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
- 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
- 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
- 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
- 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
- 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
- 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
- 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
- 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
- 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
- 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
- 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
- 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
- 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
- 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
- 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
- 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
- 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
- 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
- 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
- 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
- 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
- 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
- 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
- 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
- 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
- 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
- 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
- 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
- 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
-
-
-
-Simpson [Page 15]
- RFC 1570 PPP LCP extensions January 1994
-
-
- 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
- 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
- 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
- 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
- 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
- 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
- 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
- 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
- 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
- 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
- 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
- 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
- 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
- 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
- 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
- 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
- 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
- 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
- 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
- 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
- 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
- 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
- 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
- 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
- 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
- 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
- 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
- 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
- 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
- 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
- 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
- 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
- };
-
- #define PPPINITFCS32 0xffffffff /* Initial FCS value */
- #define PPPGOODFCS32 0xdebb20e3 /* Good final FCS value */
-
- /*
- * Calculate a new FCS given the current FCS and the new data.
- */
- u32 pppfcs32(fcs, cp, len)
- register u32 fcs;
- register unsigned char *cp;
- register int len;
- {
- ASSERT(sizeof (u32) == 4);
- ASSERT(((u32) -1) > 0);
- while (len--)
-
-
-
-Simpson [Page 16]
- RFC 1570 PPP LCP extensions January 1994
-
-
- fcs = (((fcs) >> 8) ^ fcstab_32[((fcs) ^ (*cp++)) & 0xff]);
-
- return (fcs);
- }
-
- /*
- * How to use the fcs
- */
- tryfcs32(cp, len)
- register unsigned char *cp;
- register int len;
- {
- u32 trialfcs;
-
- /* add on output */
- trialfcs = pppfcs32( PPPINITFCS32, cp, len );
- trialfcs ^= 0xffffffff; /* complement */
- cp[len] = (trialfcs & 0x00ff); /* Least significant byte first */
- cp[len+1] = ((trialfcs >>= 8) & 0x00ff);
- cp[len+2] = ((trialfcs >>= 8) & 0x00ff);
- cp[len+3] = ((trialfcs >> 8) & 0x00ff);
-
- /* check on input */
- trialfcs = pppfcs32( PPPINITFCS32, cp, len + 4 );
- if ( trialfcs == PPPGOODFCS32 )
- printf("Good FCS\n");
- }
-
-
-Security Considerations
-
- Security issues are briefly discussed in sections concerning the
- Callback Configuration Option.
-
-
-References
-
- [1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", RFC
- 1548, Daydreamer, December 1993.
-
- [2] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2,
- RFC 1340, USC/Information Sciences Institute, July 1992.
-
- [3] Simpson, W., Editor, "PPP in HDLC Framing", RFC 1549,
- Daydreamer, December 1993.
-
-
-
-
-
-
-Simpson [Page 17]
- RFC 1570 PPP LCP extensions January 1994
-
-
-Acknowledgments
-
- The Identification feature was suggested by Bob Sutterfield (Morning
- Star Technologies).
-
- The Time-Remaining feature was suggested by Brad Parker (FCR).
-
- Some of the original text for FCS-Alternatives was provided by Arthur
- Harvey (then of DEC). The Null FCS was requested by Peter Honeyman
- (UMich). The 32-bit FCS example code was provided by Karl Fox
- (Morning Star Technologies).
-
- Self-Describing-Padding was suggested and named by Fred Baker (ACC).
-
- Compound-Frames was suggested by Keith Sklower (Berkeley).
-
- Special thanks to Morning Star Technologies for providing computing
- resources and network access support for writing this specification.
-
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Fred Baker
- Advanced Computer Communications
- 315 Bollay Drive
- Santa Barbara, California 93117
-
- EMail: fbaker@acc.com
-
-
-Editor's Address
-
- Questions about this memo can also be directed to:
-
- William Allen Simpson
- Daydreamer
- Computer Systems Consulting Services
- 1384 Fontaine
- Madison Heights, Michigan 48071
-
- EMail: Bill.Simpson@um.cc.umich.edu
- bsimpson@MorningStar.com
-
-
-
-
-
-
-
-Simpson [Page 18]
-
-
diff --git a/doc/rfc1661.txt b/doc/rfc1661.txt
deleted file mode 100644
index 02112bd..0000000
--- a/doc/rfc1661.txt
+++ /dev/null
@@ -1,2976 +0,0 @@
-
-
-
-
-
-
-Network Working Group W. Simpson, Editor
-Request for Comments: 1661 Daydreamer
-STD: 51 July 1994
-Obsoletes: 1548
-Category: Standards Track
-
-
- The Point-to-Point Protocol (PPP)
-
-
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-
-Abstract
-
- The Point-to-Point Protocol (PPP) provides a standard method for
- transporting multi-protocol datagrams over point-to-point links. PPP
- is comprised of three main components:
-
- 1. A method for encapsulating multi-protocol datagrams.
-
- 2. A Link Control Protocol (LCP) for establishing, configuring,
- and testing the data-link connection.
-
- 3. A family of Network Control Protocols (NCPs) for establishing
- and configuring different network-layer protocols.
-
- This document defines the PPP organization and methodology, and the
- PPP encapsulation, together with an extensible option negotiation
- mechanism which is able to negotiate a rich assortment of
- configuration parameters and provides additional management
- functions. The PPP Link Control Protocol (LCP) is described in terms
- of this mechanism.
-
-
-Table of Contents
-
-
- 1. Introduction .......................................... 1
- 1.1 Specification of Requirements ................... 2
- 1.2 Terminology ..................................... 3
-
- 2. PPP Encapsulation ..................................... 4
-
-
-Simpson [Page i]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- 3. PPP Link Operation .................................... 6
- 3.1 Overview ........................................ 6
- 3.2 Phase Diagram ................................... 6
- 3.3 Link Dead (physical-layer not ready) ............ 7
- 3.4 Link Establishment Phase ........................ 7
- 3.5 Authentication Phase ............................ 8
- 3.6 Network-Layer Protocol Phase .................... 8
- 3.7 Link Termination Phase .......................... 9
-
- 4. The Option Negotiation Automaton ...................... 11
- 4.1 State Transition Table .......................... 12
- 4.2 States .......................................... 14
- 4.3 Events .......................................... 16
- 4.4 Actions ......................................... 21
- 4.5 Loop Avoidance .................................. 23
- 4.6 Counters and Timers ............................. 24
-
- 5. LCP Packet Formats .................................... 26
- 5.1 Configure-Request ............................... 28
- 5.2 Configure-Ack ................................... 29
- 5.3 Configure-Nak ................................... 30
- 5.4 Configure-Reject ................................ 31
- 5.5 Terminate-Request and Terminate-Ack ............. 33
- 5.6 Code-Reject ..................................... 34
- 5.7 Protocol-Reject ................................. 35
- 5.8 Echo-Request and Echo-Reply ..................... 36
- 5.9 Discard-Request ................................. 37
-
- 6. LCP Configuration Options ............................. 39
- 6.1 Maximum-Receive-Unit (MRU) ...................... 41
- 6.2 Authentication-Protocol ......................... 42
- 6.3 Quality-Protocol ................................ 43
- 6.4 Magic-Number .................................... 45
- 6.5 Protocol-Field-Compression (PFC) ................ 48
- 6.6 Address-and-Control-Field-Compression (ACFC)
-
- SECURITY CONSIDERATIONS ...................................... 51
- REFERENCES ................................................... 51
- ACKNOWLEDGEMENTS ............................................. 51
- CHAIR'S ADDRESS .............................................. 52
- EDITOR'S ADDRESS ............................................. 52
-
-
-
-
-
-
-
-
-
-
-Simpson [Page ii]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-1. Introduction
-
- The Point-to-Point Protocol is designed for simple links which
- transport packets between two peers. These links provide full-duplex
- simultaneous bi-directional operation, and are assumed to deliver
- packets in order. It is intended that PPP provide a common solution
- for easy connection of a wide variety of hosts, bridges and routers
- [1].
-
- Encapsulation
-
- The PPP encapsulation provides for multiplexing of different
- network-layer protocols simultaneously over the same link. The
- PPP encapsulation has been carefully designed to retain
- compatibility with most commonly used supporting hardware.
-
- Only 8 additional octets are necessary to form the encapsulation
- when used within the default HDLC-like framing. In environments
- where bandwidth is at a premium, the encapsulation and framing may
- be shortened to 2 or 4 octets.
-
- To support high speed implementations, the default encapsulation
- uses only simple fields, only one of which needs to be examined
- for demultiplexing. The default header and information fields
- fall on 32-bit boundaries, and the trailer may be padded to an
- arbitrary boundary.
-
- Link Control Protocol
-
- In order to be sufficiently versatile to be portable to a wide
- variety of environments, PPP provides a Link Control Protocol
- (LCP). The LCP is used to automatically agree upon the
- encapsulation format options, handle varying limits on sizes of
- packets, detect a looped-back link and other common
- misconfiguration errors, and terminate the link. Other optional
- facilities provided are authentication of the identity of its peer
- on the link, and determination when a link is functioning properly
- and when it is failing.
-
- Network Control Protocols
-
- Point-to-Point links tend to exacerbate many problems with the
- current family of network protocols. For instance, assignment and
- management of IP addresses, which is a problem even in LAN
- environments, is especially difficult over circuit-switched
- point-to-point links (such as dial-up modem servers). These
- problems are handled by a family of Network Control Protocols
- (NCPs), which each manage the specific needs required by their
-
-
-
-Simpson [Page 1]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- respective network-layer protocols. These NCPs are defined in
- companion documents.
-
- Configuration
-
- It is intended that PPP links be easy to configure. By design,
- the standard defaults handle all common configurations. The
- implementor can specify improvements to the default configuration,
- which are automatically communicated to the peer without operator
- intervention. Finally, the operator may explicitly configure
- options for the link which enable the link to operate in
- environments where it would otherwise be impossible.
-
- This self-configuration is implemented through an extensible
- option negotiation mechanism, wherein each end of the link
- describes to the other its capabilities and requirements.
- Although the option negotiation mechanism described in this
- document is specified in terms of the Link Control Protocol (LCP),
- the same facilities are designed to be used by other control
- protocols, especially the family of NCPs.
-
-
-
-1.1. Specification of Requirements
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized.
-
- MUST This word, or the adjective "required", means that the
- definition is an absolute requirement of the specification.
-
- MUST NOT This phrase means that the definition is an absolute
- prohibition of the specification.
-
- SHOULD This word, or the adjective "recommended", means that there
- may exist valid reasons in particular circumstances to
- ignore this item, but the full implications must be
- understood and carefully weighed before choosing a
- different course.
-
- MAY This word, or the adjective "optional", means that this
- item is one of an allowed set of alternatives. An
- implementation which does not include this option MUST be
- prepared to interoperate with another implementation which
- does include the option.
-
-
-
-
-
-
-Simpson [Page 2]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-1.2. Terminology
-
- This document frequently uses the following terms:
-
- datagram The unit of transmission in the network layer (such as IP).
- A datagram may be encapsulated in one or more packets
- passed to the data link layer.
-
- frame The unit of transmission at the data link layer. A frame
- may include a header and/or a trailer, along with some
- number of units of data.
-
- packet The basic unit of encapsulation, which is passed across the
- interface between the network layer and the data link
- layer. A packet is usually mapped to a frame; the
- exceptions are when data link layer fragmentation is being
- performed, or when multiple packets are incorporated into a
- single frame.
-
- peer The other end of the point-to-point link.
-
- silently discard
- The implementation discards the packet without further
- processing. The implementation SHOULD provide the
- capability of logging the error, including the contents of
- the silently discarded packet, and SHOULD record the event
- in a statistics counter.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 3]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-2. PPP Encapsulation
-
- The PPP encapsulation is used to disambiguate multiprotocol
- datagrams. This encapsulation requires framing to indicate the
- beginning and end of the encapsulation. Methods of providing framing
- are specified in companion documents.
-
- A summary of the PPP encapsulation is shown below. The fields are
- transmitted from left to right.
-
- +----------+-------------+---------+
- | Protocol | Information | Padding |
- | 8/16 bits| * | * |
- +----------+-------------+---------+
-
-
- Protocol Field
-
- The Protocol field is one or two octets, and its value identifies
- the datagram encapsulated in the Information field of the packet.
- The field is transmitted and received most significant octet
- first.
-
- The structure of this field is consistent with the ISO 3309
- extension mechanism for address fields. All Protocols MUST be
- odd; the least significant bit of the least significant octet MUST
- equal "1". Also, all Protocols MUST be assigned such that the
- least significant bit of the most significant octet equals "0".
- Frames received which don't comply with these rules MUST be
- treated as having an unrecognized Protocol.
-
- Protocol field values in the "0***" to "3***" range identify the
- network-layer protocol of specific packets, and values in the
- "8***" to "b***" range identify packets belonging to the
- associated Network Control Protocols (NCPs), if any.
-
- Protocol field values in the "4***" to "7***" range are used for
- protocols with low volume traffic which have no associated NCP.
- Protocol field values in the "c***" to "f***" range identify
- packets as link-layer Control Protocols (such as LCP).
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 4]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Up-to-date values of the Protocol field are specified in the most
- recent "Assigned Numbers" RFC [2]. This specification reserves
- the following values:
-
- Value (in hex) Protocol Name
-
- 0001 Padding Protocol
- 0003 to 001f reserved (transparency inefficient)
- 007d reserved (Control Escape)
- 00cf reserved (PPP NLPID)
- 00ff reserved (compression inefficient)
-
- 8001 to 801f unused
- 807d unused
- 80cf unused
- 80ff unused
-
- c021 Link Control Protocol
- c023 Password Authentication Protocol
- c025 Link Quality Report
- c223 Challenge Handshake Authentication Protocol
-
- Developers of new protocols MUST obtain a number from the Internet
- Assigned Numbers Authority (IANA), at IANA@isi.edu.
-
-
- Information Field
-
- The Information field is zero or more octets. The Information
- field contains the datagram for the protocol specified in the
- Protocol field.
-
- The maximum length for the Information field, including Padding,
- but not including the Protocol field, is termed the Maximum
- Receive Unit (MRU), which defaults to 1500 octets. By
- negotiation, consenting PPP implementations may use other values
- for the MRU.
-
-
- Padding
-
- On transmission, the Information field MAY be padded with an
- arbitrary number of octets up to the MRU. It is the
- responsibility of each protocol to distinguish padding octets from
- real information.
-
-
-
-
-
-
-Simpson [Page 5]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-3. PPP Link Operation
-
-3.1. Overview
-
- In order to establish communications over a point-to-point link, each
- end of the PPP link MUST first send LCP packets to configure and test
- the data link. After the link has been established, the peer MAY be
- authenticated.
-
- Then, PPP MUST send NCP packets to choose and configure one or more
- network-layer protocols. Once each of the chosen network-layer
- protocols has been configured, datagrams from each network-layer
- protocol can be sent over the link.
-
- The link will remain configured for communications until explicit LCP
- or NCP packets close the link down, or until some external event
- occurs (an inactivity timer expires or network administrator
- intervention).
-
-
-
-3.2. Phase Diagram
-
- In the process of configuring, maintaining and terminating the
- point-to-point link, the PPP link goes through several distinct
- phases which are specified in the following simplified state diagram:
-
- +------+ +-----------+ +--------------+
- | | UP | | OPENED | | SUCCESS/NONE
- | Dead |------->| Establish |---------->| Authenticate |--+
- | | | | | | |
- +------+ +-----------+ +--------------+ |
- ^ | | |
- | FAIL | FAIL | |
- +<--------------+ +----------+ |
- | | |
- | +-----------+ | +---------+ |
- | DOWN | | | CLOSING | | |
- +------------| Terminate |<---+<----------| Network |<-+
- | | | |
- +-----------+ +---------+
-
- Not all transitions are specified in this diagram. The following
- semantics MUST be followed.
-
-
-
-
-
-
-
-Simpson [Page 6]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-3.3. Link Dead (physical-layer not ready)
-
- The link necessarily begins and ends with this phase. When an
- external event (such as carrier detection or network administrator
- configuration) indicates that the physical-layer is ready to be used,
- PPP will proceed to the Link Establishment phase.
-
- During this phase, the LCP automaton (described later) will be in the
- Initial or Starting states. The transition to the Link Establishment
- phase will signal an Up event to the LCP automaton.
-
- Implementation Note:
-
- Typically, a link will return to this phase automatically after
- the disconnection of a modem. In the case of a hard-wired link,
- this phase may be extremely short -- merely long enough to detect
- the presence of the device.
-
-
-
-3.4. Link Establishment Phase
-
- The Link Control Protocol (LCP) is used to establish the connection
- through an exchange of Configure packets. This exchange is complete,
- and the LCP Opened state entered, once a Configure-Ack packet
- (described later) has been both sent and received.
-
- All Configuration Options are assumed to be at default values unless
- altered by the configuration exchange. See the chapter on LCP
- Configuration Options for further discussion.
-
- It is important to note that only Configuration Options which are
- independent of particular network-layer protocols are configured by
- LCP. Configuration of individual network-layer protocols is handled
- by separate Network Control Protocols (NCPs) during the Network-Layer
- Protocol phase.
-
- Any non-LCP packets received during this phase MUST be silently
- discarded.
-
- The receipt of the LCP Configure-Request causes a return to the Link
- Establishment phase from the Network-Layer Protocol phase or
- Authentication phase.
-
-
-
-
-
-
-
-
-Simpson [Page 7]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-3.5. Authentication Phase
-
- On some links it may be desirable to require a peer to authenticate
- itself before allowing network-layer protocol packets to be
- exchanged.
-
- By default, authentication is not mandatory. If an implementation
- desires that the peer authenticate with some specific authentication
- protocol, then it MUST request the use of that authentication
- protocol during Link Establishment phase.
-
- Authentication SHOULD take place as soon as possible after link
- establishment. However, link quality determination MAY occur
- concurrently. An implementation MUST NOT allow the exchange of link
- quality determination packets to delay authentication indefinitely.
-
- Advancement from the Authentication phase to the Network-Layer
- Protocol phase MUST NOT occur until authentication has completed. If
- authentication fails, the authenticator SHOULD proceed instead to the
- Link Termination phase.
-
- Only Link Control Protocol, authentication protocol, and link quality
- monitoring packets are allowed during this phase. All other packets
- received during this phase MUST be silently discarded.
-
- Implementation Notes:
-
- An implementation SHOULD NOT fail authentication simply due to
- timeout or lack of response. The authentication SHOULD allow some
- method of retransmission, and proceed to the Link Termination
- phase only after a number of authentication attempts has been
- exceeded.
-
- The implementation responsible for commencing Link Termination
- phase is the implementation which has refused authentication to
- its peer.
-
-
-
-3.6. Network-Layer Protocol Phase
-
- Once PPP has finished the previous phases, each network-layer
- protocol (such as IP, IPX, or AppleTalk) MUST be separately
- configured by the appropriate Network Control Protocol (NCP).
-
- Each NCP MAY be Opened and Closed at any time.
-
-
-
-
-
-Simpson [Page 8]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Implementation Note:
-
- Because an implementation may initially use a significant amount
- of time for link quality determination, implementations SHOULD
- avoid fixed timeouts when waiting for their peers to configure a
- NCP.
-
- After a NCP has reached the Opened state, PPP will carry the
- corresponding network-layer protocol packets. Any supported
- network-layer protocol packets received when the corresponding NCP is
- not in the Opened state MUST be silently discarded.
-
- Implementation Note:
-
- While LCP is in the Opened state, any protocol packet which is
- unsupported by the implementation MUST be returned in a Protocol-
- Reject (described later). Only protocols which are supported are
- silently discarded.
-
- During this phase, link traffic consists of any possible combination
- of LCP, NCP, and network-layer protocol packets.
-
-
-
-3.7. Link Termination Phase
-
- PPP can terminate the link at any time. This might happen because of
- the loss of carrier, authentication failure, link quality failure,
- the expiration of an idle-period timer, or the administrative closing
- of the link.
-
- LCP is used to close the link through an exchange of Terminate
- packets. When the link is closing, PPP informs the network-layer
- protocols so that they may take appropriate action.
-
- After the exchange of Terminate packets, the implementation SHOULD
- signal the physical-layer to disconnect in order to enforce the
- termination of the link, particularly in the case of an
- authentication failure. The sender of the Terminate-Request SHOULD
- disconnect after receiving a Terminate-Ack, or after the Restart
- counter expires. The receiver of a Terminate-Request SHOULD wait for
- the peer to disconnect, and MUST NOT disconnect until at least one
- Restart time has passed after sending a Terminate-Ack. PPP SHOULD
- proceed to the Link Dead phase.
-
- Any non-LCP packets received during this phase MUST be silently
- discarded.
-
-
-
-
-Simpson [Page 9]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Implementation Note:
-
- The closing of the link by LCP is sufficient. There is no need
- for each NCP to send a flurry of Terminate packets. Conversely,
- the fact that one NCP has Closed is not sufficient reason to cause
- the termination of the PPP link, even if that NCP was the only NCP
- currently in the Opened state.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 10]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-4. The Option Negotiation Automaton
-
- The finite-state automaton is defined by events, actions and state
- transitions. Events include reception of external commands such as
- Open and Close, expiration of the Restart timer, and reception of
- packets from a peer. Actions include the starting of the Restart
- timer and transmission of packets to the peer.
-
- Some types of packets -- Configure-Naks and Configure-Rejects, or
- Code-Rejects and Protocol-Rejects, or Echo-Requests, Echo-Replies and
- Discard-Requests -- are not differentiated in the automaton
- descriptions. As will be described later, these packets do indeed
- serve different functions. However, they always cause the same
- transitions.
-
- Events Actions
-
- Up = lower layer is Up tlu = This-Layer-Up
- Down = lower layer is Down tld = This-Layer-Down
- Open = administrative Open tls = This-Layer-Started
- Close= administrative Close tlf = This-Layer-Finished
-
- TO+ = Timeout with counter > 0 irc = Initialize-Restart-Count
- TO- = Timeout with counter expired zrc = Zero-Restart-Count
-
- RCR+ = Receive-Configure-Request (Good) scr = Send-Configure-Request
- RCR- = Receive-Configure-Request (Bad)
- RCA = Receive-Configure-Ack sca = Send-Configure-Ack
- RCN = Receive-Configure-Nak/Rej scn = Send-Configure-Nak/Rej
-
- RTR = Receive-Terminate-Request str = Send-Terminate-Request
- RTA = Receive-Terminate-Ack sta = Send-Terminate-Ack
-
- RUC = Receive-Unknown-Code scj = Send-Code-Reject
- RXJ+ = Receive-Code-Reject (permitted)
- or Receive-Protocol-Reject
- RXJ- = Receive-Code-Reject (catastrophic)
- or Receive-Protocol-Reject
- RXR = Receive-Echo-Request ser = Send-Echo-Reply
- or Receive-Echo-Reply
- or Receive-Discard-Request
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 11]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-4.1. State Transition Table
-
- The complete state transition table follows. States are indicated
- horizontally, and events are read vertically. State transitions and
- actions are represented in the form action/new-state. Multiple
- actions are separated by commas, and may continue on succeeding lines
- as space requires; multiple actions may be implemented in any
- convenient order. The state may be followed by a letter, which
- indicates an explanatory footnote. The dash ('-') indicates an
- illegal transition.
-
- | State
- | 0 1 2 3 4 5
-Events| Initial Starting Closed Stopped Closing Stopping
-------+-----------------------------------------------------------
- Up | 2 irc,scr/6 - - - -
- Down | - - 0 tls/1 0 1
- Open | tls/1 1 irc,scr/6 3r 5r 5r
- Close| 0 tlf/0 2 2 4 4
- |
- TO+ | - - - - str/4 str/5
- TO- | - - - - tlf/2 tlf/3
- |
- RCR+ | - - sta/2 irc,scr,sca/8 4 5
- RCR- | - - sta/2 irc,scr,scn/6 4 5
- RCA | - - sta/2 sta/3 4 5
- RCN | - - sta/2 sta/3 4 5
- |
- RTR | - - sta/2 sta/3 sta/4 sta/5
- RTA | - - 2 3 tlf/2 tlf/3
- |
- RUC | - - scj/2 scj/3 scj/4 scj/5
- RXJ+ | - - 2 3 4 5
- RXJ- | - - tlf/2 tlf/3 tlf/2 tlf/3
- |
- RXR | - - 2 3 4 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 12]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-
- | State
- | 6 7 8 9
-Events| Req-Sent Ack-Rcvd Ack-Sent Opened
-------+-----------------------------------------
- Up | - - - -
- Down | 1 1 1 tld/1
- Open | 6 7 8 9r
- Close|irc,str/4 irc,str/4 irc,str/4 tld,irc,str/4
- |
- TO+ | scr/6 scr/6 scr/8 -
- TO- | tlf/3p tlf/3p tlf/3p -
- |
- RCR+ | sca/8 sca,tlu/9 sca/8 tld,scr,sca/8
- RCR- | scn/6 scn/7 scn/6 tld,scr,scn/6
- RCA | irc/7 scr/6x irc,tlu/9 tld,scr/6x
- RCN |irc,scr/6 scr/6x irc,scr/8 tld,scr/6x
- |
- RTR | sta/6 sta/6 sta/6 tld,zrc,sta/5
- RTA | 6 6 8 tld,scr/6
- |
- RUC | scj/6 scj/7 scj/8 scj/9
- RXJ+ | 6 6 8 9
- RXJ- | tlf/3 tlf/3 tlf/3 tld,irc,str/5
- |
- RXR | 6 7 8 ser/9
-
-
- The states in which the Restart timer is running are identifiable by
- the presence of TO events. Only the Send-Configure-Request, Send-
- Terminate-Request and Zero-Restart-Count actions start or re-start
- the Restart timer. The Restart timer is stopped when transitioning
- from any state where the timer is running to a state where the timer
- is not running.
-
- The events and actions are defined according to a message passing
- architecture, rather than a signalling architecture. If an action is
- desired to control specific signals (such as DTR), additional actions
- are likely to be required.
-
- [p] Passive option; see Stopped state discussion.
-
- [r] Restart option; see Open event discussion.
-
- [x] Crossed connection; see RCA event discussion.
-
-
-
-
-
-
-Simpson [Page 13]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-4.2. States
-
- Following is a more detailed description of each automaton state.
-
- Initial
-
- In the Initial state, the lower layer is unavailable (Down), and
- no Open has occurred. The Restart timer is not running in the
- Initial state.
-
- Starting
-
- The Starting state is the Open counterpart to the Initial state.
- An administrative Open has been initiated, but the lower layer is
- still unavailable (Down). The Restart timer is not running in the
- Starting state.
-
- When the lower layer becomes available (Up), a Configure-Request
- is sent.
-
- Closed
-
- In the Closed state, the link is available (Up), but no Open has
- occurred. The Restart timer is not running in the Closed state.
-
- Upon reception of Configure-Request packets, a Terminate-Ack is
- sent. Terminate-Acks are silently discarded to avoid creating a
- loop.
-
- Stopped
-
- The Stopped state is the Open counterpart to the Closed state. It
- is entered when the automaton is waiting for a Down event after
- the This-Layer-Finished action, or after sending a Terminate-Ack.
- The Restart timer is not running in the Stopped state.
-
- Upon reception of Configure-Request packets, an appropriate
- response is sent. Upon reception of other packets, a Terminate-
- Ack is sent. Terminate-Acks are silently discarded to avoid
- creating a loop.
-
- Rationale:
-
- The Stopped state is a junction state for link termination,
- link configuration failure, and other automaton failure modes.
- These potentially separate states have been combined.
-
- There is a race condition between the Down event response (from
-
-
-
-Simpson [Page 14]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- the This-Layer-Finished action) and the Receive-Configure-
- Request event. When a Configure-Request arrives before the
- Down event, the Down event will supercede by returning the
- automaton to the Starting state. This prevents attack by
- repetition.
-
- Implementation Option:
-
- After the peer fails to respond to Configure-Requests, an
- implementation MAY wait passively for the peer to send
- Configure-Requests. In this case, the This-Layer-Finished
- action is not used for the TO- event in states Req-Sent, Ack-
- Rcvd and Ack-Sent.
-
- This option is useful for dedicated circuits, or circuits which
- have no status signals available, but SHOULD NOT be used for
- switched circuits.
-
- Closing
-
- In the Closing state, an attempt is made to terminate the
- connection. A Terminate-Request has been sent and the Restart
- timer is running, but a Terminate-Ack has not yet been received.
-
- Upon reception of a Terminate-Ack, the Closed state is entered.
- Upon the expiration of the Restart timer, a new Terminate-Request
- is transmitted, and the Restart timer is restarted. After the
- Restart timer has expired Max-Terminate times, the Closed state is
- entered.
-
- Stopping
-
- The Stopping state is the Open counterpart to the Closing state.
- A Terminate-Request has been sent and the Restart timer is
- running, but a Terminate-Ack has not yet been received.
-
- Rationale:
-
- The Stopping state provides a well defined opportunity to
- terminate a link before allowing new traffic. After the link
- has terminated, a new configuration may occur via the Stopped
- or Starting states.
-
- Request-Sent
-
- In the Request-Sent state an attempt is made to configure the
- connection. A Configure-Request has been sent and the Restart
- timer is running, but a Configure-Ack has not yet been received
-
-
-
-Simpson [Page 15]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- nor has one been sent.
-
- Ack-Received
-
- In the Ack-Received state, a Configure-Request has been sent and a
- Configure-Ack has been received. The Restart timer is still
- running, since a Configure-Ack has not yet been sent.
-
- Ack-Sent
-
- In the Ack-Sent state, a Configure-Request and a Configure-Ack
- have both been sent, but a Configure-Ack has not yet been
- received. The Restart timer is running, since a Configure-Ack has
- not yet been received.
-
- Opened
-
- In the Opened state, a Configure-Ack has been both sent and
- received. The Restart timer is not running.
-
- When entering the Opened state, the implementation SHOULD signal
- the upper layers that it is now Up. Conversely, when leaving the
- Opened state, the implementation SHOULD signal the upper layers
- that it is now Down.
-
-
-
-4.3. Events
-
- Transitions and actions in the automaton are caused by events.
-
- Up
-
- This event occurs when a lower layer indicates that it is ready to
- carry packets.
-
- Typically, this event is used by a modem handling or calling
- process, or by some other coupling of the PPP link to the physical
- media, to signal LCP that the link is entering Link Establishment
- phase.
-
- It also can be used by LCP to signal each NCP that the link is
- entering Network-Layer Protocol phase. That is, the This-Layer-Up
- action from LCP triggers the Up event in the NCP.
-
- Down
-
- This event occurs when a lower layer indicates that it is no
-
-
-
-Simpson [Page 16]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- longer ready to carry packets.
-
- Typically, this event is used by a modem handling or calling
- process, or by some other coupling of the PPP link to the physical
- media, to signal LCP that the link is entering Link Dead phase.
-
- It also can be used by LCP to signal each NCP that the link is
- leaving Network-Layer Protocol phase. That is, the This-Layer-
- Down action from LCP triggers the Down event in the NCP.
-
- Open
-
- This event indicates that the link is administratively available
- for traffic; that is, the network administrator (human or program)
- has indicated that the link is allowed to be Opened. When this
- event occurs, and the link is not in the Opened state, the
- automaton attempts to send configuration packets to the peer.
-
- If the automaton is not able to begin configuration (the lower
- layer is Down, or a previous Close event has not completed), the
- establishment of the link is automatically delayed.
-
- When a Terminate-Request is received, or other events occur which
- cause the link to become unavailable, the automaton will progress
- to a state where the link is ready to re-open. No additional
- administrative intervention is necessary.
-
- Implementation Option:
-
- Experience has shown that users will execute an additional Open
- command when they want to renegotiate the link. This might
- indicate that new values are to be negotiated.
-
- Since this is not the meaning of the Open event, it is
- suggested that when an Open user command is executed in the
- Opened, Closing, Stopping, or Stopped states, the
- implementation issue a Down event, immediately followed by an
- Up event. Care must be taken that an intervening Down event
- cannot occur from another source.
-
- The Down followed by an Up will cause an orderly renegotiation
- of the link, by progressing through the Starting to the
- Request-Sent state. This will cause the renegotiation of the
- link, without any harmful side effects.
-
- Close
-
- This event indicates that the link is not available for traffic;
-
-
-
-Simpson [Page 17]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- that is, the network administrator (human or program) has
- indicated that the link is not allowed to be Opened. When this
- event occurs, and the link is not in the Closed state, the
- automaton attempts to terminate the connection. Futher attempts
- to re-configure the link are denied until a new Open event occurs.
-
- Implementation Note:
-
- When authentication fails, the link SHOULD be terminated, to
- prevent attack by repetition and denial of service to other
- users. Since the link is administratively available (by
- definition), this can be accomplished by simulating a Close
- event to the LCP, immediately followed by an Open event. Care
- must be taken that an intervening Close event cannot occur from
- another source.
-
- The Close followed by an Open will cause an orderly termination
- of the link, by progressing through the Closing to the Stopping
- state, and the This-Layer-Finished action can disconnect the
- link. The automaton waits in the Stopped or Starting states
- for the next connection attempt.
-
- Timeout (TO+,TO-)
-
- This event indicates the expiration of the Restart timer. The
- Restart timer is used to time responses to Configure-Request and
- Terminate-Request packets.
-
- The TO+ event indicates that the Restart counter continues to be
- greater than zero, which triggers the corresponding Configure-
- Request or Terminate-Request packet to be retransmitted.
-
- The TO- event indicates that the Restart counter is not greater
- than zero, and no more packets need to be retransmitted.
-
- Receive-Configure-Request (RCR+,RCR-)
-
- This event occurs when a Configure-Request packet is received from
- the peer. The Configure-Request packet indicates the desire to
- open a connection and may specify Configuration Options. The
- Configure-Request packet is more fully described in a later
- section.
-
- The RCR+ event indicates that the Configure-Request was
- acceptable, and triggers the transmission of a corresponding
- Configure-Ack.
-
- The RCR- event indicates that the Configure-Request was
-
-
-
-Simpson [Page 18]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- unacceptable, and triggers the transmission of a corresponding
- Configure-Nak or Configure-Reject.
-
- Implementation Note:
-
- These events may occur on a connection which is already in the
- Opened state. The implementation MUST be prepared to
- immediately renegotiate the Configuration Options.
-
- Receive-Configure-Ack (RCA)
-
- This event occurs when a valid Configure-Ack packet is received
- from the peer. The Configure-Ack packet is a positive response to
- a Configure-Request packet. An out of sequence or otherwise
- invalid packet is silently discarded.
-
- Implementation Note:
-
- Since the correct packet has already been received before
- reaching the Ack-Rcvd or Opened states, it is extremely
- unlikely that another such packet will arrive. As specified,
- all invalid Ack/Nak/Rej packets are silently discarded, and do
- not affect the transitions of the automaton.
-
- However, it is not impossible that a correctly formed packet
- will arrive through a coincidentally-timed cross-connection.
- It is more likely to be the result of an implementation error.
- At the very least, this occurance SHOULD be logged.
-
- Receive-Configure-Nak/Rej (RCN)
-
- This event occurs when a valid Configure-Nak or Configure-Reject
- packet is received from the peer. The Configure-Nak and
- Configure-Reject packets are negative responses to a Configure-
- Request packet. An out of sequence or otherwise invalid packet is
- silently discarded.
-
- Implementation Note:
-
- Although the Configure-Nak and Configure-Reject cause the same
- state transition in the automaton, these packets have
- significantly different effects on the Configuration Options
- sent in the resulting Configure-Request packet.
-
- Receive-Terminate-Request (RTR)
-
- This event occurs when a Terminate-Request packet is received.
- The Terminate-Request packet indicates the desire of the peer to
-
-
-
-Simpson [Page 19]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- close the connection.
-
- Implementation Note:
-
- This event is not identical to the Close event (see above), and
- does not override the Open commands of the local network
- administrator. The implementation MUST be prepared to receive
- a new Configure-Request without network administrator
- intervention.
-
- Receive-Terminate-Ack (RTA)
-
- This event occurs when a Terminate-Ack packet is received from the
- peer. The Terminate-Ack packet is usually a response to a
- Terminate-Request packet. The Terminate-Ack packet may also
- indicate that the peer is in Closed or Stopped states, and serves
- to re-synchronize the link configuration.
-
- Receive-Unknown-Code (RUC)
-
- This event occurs when an un-interpretable packet is received from
- the peer. A Code-Reject packet is sent in response.
-
- Receive-Code-Reject, Receive-Protocol-Reject (RXJ+,RXJ-)
-
- This event occurs when a Code-Reject or a Protocol-Reject packet
- is received from the peer.
-
- The RXJ+ event arises when the rejected value is acceptable, such
- as a Code-Reject of an extended code, or a Protocol-Reject of a
- NCP. These are within the scope of normal operation. The
- implementation MUST stop sending the offending packet type.
-
- The RXJ- event arises when the rejected value is catastrophic,
- such as a Code-Reject of Configure-Request, or a Protocol-Reject
- of LCP! This event communicates an unrecoverable error that
- terminates the connection.
-
- Receive-Echo-Request, Receive-Echo-Reply, Receive-Discard-Request
- (RXR)
-
- This event occurs when an Echo-Request, Echo-Reply or Discard-
- Request packet is received from the peer. The Echo-Reply packet
- is a response to an Echo-Request packet. There is no reply to an
- Echo-Reply or Discard-Request packet.
-
-
-
-
-
-
-Simpson [Page 20]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-4.4. Actions
-
- Actions in the automaton are caused by events and typically indicate
- the transmission of packets and/or the starting or stopping of the
- Restart timer.
-
- Illegal-Event (-)
-
- This indicates an event that cannot occur in a properly
- implemented automaton. The implementation has an internal error,
- which should be reported and logged. No transition is taken, and
- the implementation SHOULD NOT reset or freeze.
-
- This-Layer-Up (tlu)
-
- This action indicates to the upper layers that the automaton is
- entering the Opened state.
-
- Typically, this action is used by the LCP to signal the Up event
- to a NCP, Authentication Protocol, or Link Quality Protocol, or
- MAY be used by a NCP to indicate that the link is available for
- its network layer traffic.
-
- This-Layer-Down (tld)
-
- This action indicates to the upper layers that the automaton is
- leaving the Opened state.
-
- Typically, this action is used by the LCP to signal the Down event
- to a NCP, Authentication Protocol, or Link Quality Protocol, or
- MAY be used by a NCP to indicate that the link is no longer
- available for its network layer traffic.
-
- This-Layer-Started (tls)
-
- This action indicates to the lower layers that the automaton is
- entering the Starting state, and the lower layer is needed for the
- link. The lower layer SHOULD respond with an Up event when the
- lower layer is available.
-
- This results of this action are highly implementation dependent.
-
- This-Layer-Finished (tlf)
-
- This action indicates to the lower layers that the automaton is
- entering the Initial, Closed or Stopped states, and the lower
- layer is no longer needed for the link. The lower layer SHOULD
- respond with a Down event when the lower layer has terminated.
-
-
-
-Simpson [Page 21]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Typically, this action MAY be used by the LCP to advance to the
- Link Dead phase, or MAY be used by a NCP to indicate to the LCP
- that the link may terminate when there are no other NCPs open.
-
- This results of this action are highly implementation dependent.
-
- Initialize-Restart-Count (irc)
-
- This action sets the Restart counter to the appropriate value
- (Max-Terminate or Max-Configure). The counter is decremented for
- each transmission, including the first.
-
- Implementation Note:
-
- In addition to setting the Restart counter, the implementation
- MUST set the timeout period to the initial value when Restart
- timer backoff is used.
-
- Zero-Restart-Count (zrc)
-
- This action sets the Restart counter to zero.
-
- Implementation Note:
-
- This action enables the FSA to pause before proceeding to the
- desired final state, allowing traffic to be processed by the
- peer. In addition to zeroing the Restart counter, the
- implementation MUST set the timeout period to an appropriate
- value.
-
- Send-Configure-Request (scr)
-
- A Configure-Request packet is transmitted. This indicates the
- desire to open a connection with a specified set of Configuration
- Options. The Restart timer is started when the Configure-Request
- packet is transmitted, to guard against packet loss. The Restart
- counter is decremented each time a Configure-Request is sent.
-
- Send-Configure-Ack (sca)
-
- A Configure-Ack packet is transmitted. This acknowledges the
- reception of a Configure-Request packet with an acceptable set of
- Configuration Options.
-
- Send-Configure-Nak (scn)
-
- A Configure-Nak or Configure-Reject packet is transmitted, as
- appropriate. This negative response reports the reception of a
-
-
-
-Simpson [Page 22]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Configure-Request packet with an unacceptable set of Configuration
- Options.
-
- Configure-Nak packets are used to refuse a Configuration Option
- value, and to suggest a new, acceptable value. Configure-Reject
- packets are used to refuse all negotiation about a Configuration
- Option, typically because it is not recognized or implemented.
- The use of Configure-Nak versus Configure-Reject is more fully
- described in the chapter on LCP Packet Formats.
-
- Send-Terminate-Request (str)
-
- A Terminate-Request packet is transmitted. This indicates the
- desire to close a connection. The Restart timer is started when
- the Terminate-Request packet is transmitted, to guard against
- packet loss. The Restart counter is decremented each time a
- Terminate-Request is sent.
-
- Send-Terminate-Ack (sta)
-
- A Terminate-Ack packet is transmitted. This acknowledges the
- reception of a Terminate-Request packet or otherwise serves to
- synchronize the automatons.
-
- Send-Code-Reject (scj)
-
- A Code-Reject packet is transmitted. This indicates the reception
- of an unknown type of packet.
-
- Send-Echo-Reply (ser)
-
- An Echo-Reply packet is transmitted. This acknowledges the
- reception of an Echo-Request packet.
-
-
-
-4.5. Loop Avoidance
-
- The protocol makes a reasonable attempt at avoiding Configuration
- Option negotiation loops. However, the protocol does NOT guarantee
- that loops will not happen. As with any negotiation, it is possible
- to configure two PPP implementations with conflicting policies that
- will never converge. It is also possible to configure policies which
- do converge, but which take significant time to do so. Implementors
- should keep this in mind and SHOULD implement loop detection
- mechanisms or higher level timeouts.
-
-
-
-
-
-Simpson [Page 23]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-4.6. Counters and Timers
-
- Restart Timer
-
- There is one special timer used by the automaton. The Restart
- timer is used to time transmissions of Configure-Request and
- Terminate-Request packets. Expiration of the Restart timer causes
- a Timeout event, and retransmission of the corresponding
- Configure-Request or Terminate-Request packet. The Restart timer
- MUST be configurable, but SHOULD default to three (3) seconds.
-
- Implementation Note:
-
- The Restart timer SHOULD be based on the speed of the link.
- The default value is designed for low speed (2,400 to 9,600
- bps), high switching latency links (typical telephone lines).
- Higher speed links, or links with low switching latency, SHOULD
- have correspondingly faster retransmission times.
-
- Instead of a constant value, the Restart timer MAY begin at an
- initial small value and increase to the configured final value.
- Each successive value less than the final value SHOULD be at
- least twice the previous value. The initial value SHOULD be
- large enough to account for the size of the packets, twice the
- round trip time for transmission at the link speed, and at
- least an additional 100 milliseconds to allow the peer to
- process the packets before responding. Some circuits add
- another 200 milliseconds of satellite delay. Round trip times
- for modems operating at 14,400 bps have been measured in the
- range of 160 to more than 600 milliseconds.
-
- Max-Terminate
-
- There is one required restart counter for Terminate-Requests.
- Max-Terminate indicates the number of Terminate-Request packets
- sent without receiving a Terminate-Ack before assuming that the
- peer is unable to respond. Max-Terminate MUST be configurable,
- but SHOULD default to two (2) transmissions.
-
- Max-Configure
-
- A similar counter is recommended for Configure-Requests. Max-
- Configure indicates the number of Configure-Request packets sent
- without receiving a valid Configure-Ack, Configure-Nak or
- Configure-Reject before assuming that the peer is unable to
- respond. Max-Configure MUST be configurable, but SHOULD default
- to ten (10) transmissions.
-
-
-
-
-Simpson [Page 24]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Max-Failure
-
- A related counter is recommended for Configure-Nak. Max-Failure
- indicates the number of Configure-Nak packets sent without sending
- a Configure-Ack before assuming that configuration is not
- converging. Any further Configure-Nak packets for peer requested
- options are converted to Configure-Reject packets, and locally
- desired options are no longer appended. Max-Failure MUST be
- configurable, but SHOULD default to five (5) transmissions.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 25]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-5. LCP Packet Formats
-
- There are three classes of LCP packets:
-
- 1. Link Configuration packets used to establish and configure a
- link (Configure-Request, Configure-Ack, Configure-Nak and
- Configure-Reject).
-
- 2. Link Termination packets used to terminate a link (Terminate-
- Request and Terminate-Ack).
-
- 3. Link Maintenance packets used to manage and debug a link
- (Code-Reject, Protocol-Reject, Echo-Request, Echo-Reply, and
- Discard-Request).
-
- In the interest of simplicity, there is no version field in the LCP
- packet. A correctly functioning LCP implementation will always
- respond to unknown Protocols and Codes with an easily recognizable
- LCP packet, thus providing a deterministic fallback mechanism for
- implementations of other versions.
-
- Regardless of which Configuration Options are enabled, all LCP Link
- Configuration, Link Termination, and Code-Reject packets (codes 1
- through 7) are always sent as if no Configuration Options were
- negotiated. In particular, each Configuration Option specifies a
- default value. This ensures that such LCP packets are always
- recognizable, even when one end of the link mistakenly believes the
- link to be open.
-
- Exactly one LCP packet is encapsulated in the PPP Information field,
- where the PPP Protocol field indicates type hex c021 (Link Control
- Protocol).
-
- A summary of the Link Control Protocol packet format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
- Code
-
- The Code field is one octet, and identifies the kind of LCP
-
-
-
-Simpson [Page 26]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- packet. When a packet is received with an unknown Code field, a
- Code-Reject packet is transmitted.
-
- Up-to-date values of the LCP Code field are specified in the most
- recent "Assigned Numbers" RFC [2]. This document concerns the
- following values:
-
- 1 Configure-Request
- 2 Configure-Ack
- 3 Configure-Nak
- 4 Configure-Reject
- 5 Terminate-Request
- 6 Terminate-Ack
- 7 Code-Reject
- 8 Protocol-Reject
- 9 Echo-Request
- 10 Echo-Reply
- 11 Discard-Request
-
-
- Identifier
-
- The Identifier field is one octet, and aids in matching requests
- and replies. When a packet is received with an invalid Identifier
- field, the packet is silently discarded without affecting the
- automaton.
-
- Length
-
- The Length field is two octets, and indicates the length of the
- LCP packet, including the Code, Identifier, Length and Data
- fields. The Length MUST NOT exceed the MRU of the link.
-
- Octets outside the range of the Length field are treated as
- padding and are ignored on reception. When a packet is received
- with an invalid Length field, the packet is silently discarded
- without affecting the automaton.
-
- Data
-
- The Data field is zero or more octets, as indicated by the Length
- field. The format of the Data field is determined by the Code
- field.
-
-
-
-
-
-
-
-
-Simpson [Page 27]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-5.1. Configure-Request
-
- Description
-
- An implementation wishing to open a connection MUST transmit a
- Configure-Request. The Options field is filled with any desired
- changes to the link defaults. Configuration Options SHOULD NOT be
- included with default values.
-
- Upon reception of a Configure-Request, an appropriate reply MUST
- be transmitted.
-
- A summary of the Configure-Request packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options ...
- +-+-+-+-+
-
-
- Code
-
- 1 for Configure-Request.
-
- Identifier
-
- The Identifier field MUST be changed whenever the contents of the
- Options field changes, and whenever a valid reply has been
- received for a previous request. For retransmissions, the
- Identifier MAY remain unchanged.
-
- Options
-
- The options field is variable in length, and contains the list of
- zero or more Configuration Options that the sender desires to
- negotiate. All Configuration Options are always negotiated
- simultaneously. The format of Configuration Options is further
- described in a later chapter.
-
-
-
-
-
-
-
-
-
-Simpson [Page 28]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-5.2. Configure-Ack
-
- Description
-
- If every Configuration Option received in a Configure-Request is
- recognizable and all values are acceptable, then the
- implementation MUST transmit a Configure-Ack. The acknowledged
- Configuration Options MUST NOT be reordered or modified in any
- way.
-
- On reception of a Configure-Ack, the Identifier field MUST match
- that of the last transmitted Configure-Request. Additionally, the
- Configuration Options in a Configure-Ack MUST exactly match those
- of the last transmitted Configure-Request. Invalid packets are
- silently discarded.
-
- A summary of the Configure-Ack packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options ...
- +-+-+-+-+
-
-
- Code
-
- 2 for Configure-Ack.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Configure-Request which caused this Configure-Ack.
-
- Options
-
- The Options field is variable in length, and contains the list of
- zero or more Configuration Options that the sender is
- acknowledging. All Configuration Options are always acknowledged
- simultaneously.
-
-
-
-
-
-
-
-
-Simpson [Page 29]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-5.3. Configure-Nak
-
- Description
-
- If every instance of the received Configuration Options is
- recognizable, but some values are not acceptable, then the
- implementation MUST transmit a Configure-Nak. The Options field
- is filled with only the unacceptable Configuration Options from
- the Configure-Request. All acceptable Configuration Options are
- filtered out of the Configure-Nak, but otherwise the Configuration
- Options from the Configure-Request MUST NOT be reordered.
-
- Options which have no value fields (boolean options) MUST use the
- Configure-Reject reply instead.
-
- Each Configuration Option which is allowed only a single instance
- MUST be modified to a value acceptable to the Configure-Nak
- sender. The default value MAY be used, when this differs from the
- requested value.
-
- When a particular type of Configuration Option can be listed more
- than once with different values, the Configure-Nak MUST include a
- list of all values for that option which are acceptable to the
- Configure-Nak sender. This includes acceptable values that were
- present in the Configure-Request.
-
- Finally, an implementation may be configured to request the
- negotiation of a specific Configuration Option. If that option is
- not listed, then that option MAY be appended to the list of Nak'd
- Configuration Options, in order to prompt the peer to include that
- option in its next Configure-Request packet. Any value fields for
- the option MUST indicate values acceptable to the Configure-Nak
- sender.
-
- On reception of a Configure-Nak, the Identifier field MUST match
- that of the last transmitted Configure-Request. Invalid packets
- are silently discarded.
-
- Reception of a valid Configure-Nak indicates that when a new
- Configure-Request is sent, the Configuration Options MAY be
- modified as specified in the Configure-Nak. When multiple
- instances of a Configuration Option are present, the peer SHOULD
- select a single value to include in its next Configure-Request
- packet.
-
- Some Configuration Options have a variable length. Since the
- Nak'd Option has been modified by the peer, the implementation
- MUST be able to handle an Option length which is different from
-
-
-
-Simpson [Page 30]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- the original Configure-Request.
-
- A summary of the Configure-Nak packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options ...
- +-+-+-+-+
-
-
- Code
-
- 3 for Configure-Nak.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Configure-Request which caused this Configure-Nak.
-
- Options
-
- The Options field is variable in length, and contains the list of
- zero or more Configuration Options that the sender is Nak'ing.
- All Configuration Options are always Nak'd simultaneously.
-
-
-
-5.4. Configure-Reject
-
- Description
-
- If some Configuration Options received in a Configure-Request are
- not recognizable or are not acceptable for negotiation (as
- configured by a network administrator), then the implementation
- MUST transmit a Configure-Reject. The Options field is filled
- with only the unacceptable Configuration Options from the
- Configure-Request. All recognizable and negotiable Configuration
- Options are filtered out of the Configure-Reject, but otherwise
- the Configuration Options MUST NOT be reordered or modified in any
- way.
-
- On reception of a Configure-Reject, the Identifier field MUST
- match that of the last transmitted Configure-Request.
- Additionally, the Configuration Options in a Configure-Reject MUST
-
-
-
-Simpson [Page 31]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- be a proper subset of those in the last transmitted Configure-
- Request. Invalid packets are silently discarded.
-
- Reception of a valid Configure-Reject indicates that when a new
- Configure-Request is sent, it MUST NOT include any of the
- Configuration Options listed in the Configure-Reject.
-
- A summary of the Configure-Reject packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options ...
- +-+-+-+-+
-
-
- Code
-
- 4 for Configure-Reject.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Configure-Request which caused this Configure-Reject.
-
- Options
-
- The Options field is variable in length, and contains the list of
- zero or more Configuration Options that the sender is rejecting.
- All Configuration Options are always rejected simultaneously.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 32]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-5.5. Terminate-Request and Terminate-Ack
-
- Description
-
- LCP includes Terminate-Request and Terminate-Ack Codes in order to
- provide a mechanism for closing a connection.
-
- An implementation wishing to close a connection SHOULD transmit a
- Terminate-Request. Terminate-Request packets SHOULD continue to
- be sent until Terminate-Ack is received, the lower layer indicates
- that it has gone down, or a sufficiently large number have been
- transmitted such that the peer is down with reasonable certainty.
-
- Upon reception of a Terminate-Request, a Terminate-Ack MUST be
- transmitted.
-
- Reception of an unelicited Terminate-Ack indicates that the peer
- is in the Closed or Stopped states, or is otherwise in need of
- re-negotiation.
-
- A summary of the Terminate-Request and Terminate-Ack packet formats
- is shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
- Code
-
- 5 for Terminate-Request;
-
- 6 for Terminate-Ack.
-
- Identifier
-
- On transmission, the Identifier field MUST be changed whenever the
- content of the Data field changes, and whenever a valid reply has
- been received for a previous request. For retransmissions, the
- Identifier MAY remain unchanged.
-
- On reception, the Identifier field of the Terminate-Request is
- copied into the Identifier field of the Terminate-Ack packet.
-
-
-
-
-Simpson [Page 33]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Data
-
- The Data field is zero or more octets, and contains uninterpreted
- data for use by the sender. The data may consist of any binary
- value. The end of the field is indicated by the Length.
-
-
-
-5.6. Code-Reject
-
- Description
-
- Reception of a LCP packet with an unknown Code indicates that the
- peer is operating with a different version. This MUST be reported
- back to the sender of the unknown Code by transmitting a Code-
- Reject.
-
- Upon reception of the Code-Reject of a code which is fundamental
- to this version of the protocol, the implementation SHOULD report
- the problem and drop the connection, since it is unlikely that the
- situation can be rectified automatically.
-
- A summary of the Code-Reject packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Rejected-Packet ...
- +-+-+-+-+-+-+-+-+
-
-
- Code
-
- 7 for Code-Reject.
-
- Identifier
-
- The Identifier field MUST be changed for each Code-Reject sent.
-
- Rejected-Packet
-
- The Rejected-Packet field contains a copy of the LCP packet which
- is being rejected. It begins with the Information field, and does
- not include any Data Link Layer headers nor an FCS. The
- Rejected-Packet MUST be truncated to comply with the peer's
-
-
-
-Simpson [Page 34]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- established MRU.
-
-
-
-5.7. Protocol-Reject
-
- Description
-
- Reception of a PPP packet with an unknown Protocol field indicates
- that the peer is attempting to use a protocol which is
- unsupported. This usually occurs when the peer attempts to
- configure a new protocol. If the LCP automaton is in the Opened
- state, then this MUST be reported back to the peer by transmitting
- a Protocol-Reject.
-
- Upon reception of a Protocol-Reject, the implementation MUST stop
- sending packets of the indicated protocol at the earliest
- opportunity.
-
- Protocol-Reject packets can only be sent in the LCP Opened state.
- Protocol-Reject packets received in any state other than the LCP
- Opened state SHOULD be silently discarded.
-
- A summary of the Protocol-Reject packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Rejected-Protocol | Rejected-Information ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Code
-
- 8 for Protocol-Reject.
-
- Identifier
-
- The Identifier field MUST be changed for each Protocol-Reject
- sent.
-
- Rejected-Protocol
-
- The Rejected-Protocol field is two octets, and contains the PPP
- Protocol field of the packet which is being rejected.
-
-
-
-Simpson [Page 35]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Rejected-Information
-
- The Rejected-Information field contains a copy of the packet which
- is being rejected. It begins with the Information field, and does
- not include any Data Link Layer headers nor an FCS. The
- Rejected-Information MUST be truncated to comply with the peer's
- established MRU.
-
-
-
-5.8. Echo-Request and Echo-Reply
-
- Description
-
- LCP includes Echo-Request and Echo-Reply Codes in order to provide
- a Data Link Layer loopback mechanism for use in exercising both
- directions of the link. This is useful as an aid in debugging,
- link quality determination, performance testing, and for numerous
- other functions.
-
- Upon reception of an Echo-Request in the LCP Opened state, an
- Echo-Reply MUST be transmitted.
-
- Echo-Request and Echo-Reply packets MUST only be sent in the LCP
- Opened state. Echo-Request and Echo-Reply packets received in any
- state other than the LCP Opened state SHOULD be silently
- discarded.
-
-
- A summary of the Echo-Request and Echo-Reply packet formats is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic-Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
- Code
-
- 9 for Echo-Request;
-
- 10 for Echo-Reply.
-
-
-
-Simpson [Page 36]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Identifier
-
- On transmission, the Identifier field MUST be changed whenever the
- content of the Data field changes, and whenever a valid reply has
- been received for a previous request. For retransmissions, the
- Identifier MAY remain unchanged.
-
- On reception, the Identifier field of the Echo-Request is copied
- into the Identifier field of the Echo-Reply packet.
-
- Magic-Number
-
- The Magic-Number field is four octets, and aids in detecting links
- which are in the looped-back condition. Until the Magic-Number
- Configuration Option has been successfully negotiated, the Magic-
- Number MUST be transmitted as zero. See the Magic-Number
- Configuration Option for further explanation.
-
- Data
-
- The Data field is zero or more octets, and contains uninterpreted
- data for use by the sender. The data may consist of any binary
- value. The end of the field is indicated by the Length.
-
-
-
-5.9. Discard-Request
-
- Description
-
- LCP includes a Discard-Request Code in order to provide a Data
- Link Layer sink mechanism for use in exercising the local to
- remote direction of the link. This is useful as an aid in
- debugging, performance testing, and for numerous other functions.
-
- Discard-Request packets MUST only be sent in the LCP Opened state.
- On reception, the receiver MUST silently discard any Discard-
- Request that it receives.
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 37]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- A summary of the Discard-Request packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic-Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Code
-
- 11 for Discard-Request.
-
- Identifier
-
- The Identifier field MUST be changed for each Discard-Request
- sent.
-
- Magic-Number
-
- The Magic-Number field is four octets, and aids in detecting links
- which are in the looped-back condition. Until the Magic-Number
- Configuration Option has been successfully negotiated, the Magic-
- Number MUST be transmitted as zero. See the Magic-Number
- Configuration Option for further explanation.
-
- Data
-
- The Data field is zero or more octets, and contains uninterpreted
- data for use by the sender. The data may consist of any binary
- value. The end of the field is indicated by the Length.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 38]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-6. LCP Configuration Options
-
- LCP Configuration Options allow negotiation of modifications to the
- default characteristics of a point-to-point link. If a Configuration
- Option is not included in a Configure-Request packet, the default
- value for that Configuration Option is assumed.
-
- Some Configuration Options MAY be listed more than once. The effect
- of this is Configuration Option specific, and is specified by each
- such Configuration Option description. (None of the Configuration
- Options in this specification can be listed more than once.)
-
- The end of the list of Configuration Options is indicated by the
- Length field of the LCP packet.
-
- Unless otherwise specified, all Configuration Options apply in a
- half-duplex fashion; typically, in the receive direction of the link
- from the point of view of the Configure-Request sender.
-
- Design Philosophy
-
- The options indicate additional capabilities or requirements of
- the implementation that is requesting the option. An
- implementation which does not understand any option SHOULD
- interoperate with one which implements every option.
-
- A default is specified for each option which allows the link to
- correctly function without negotiation of the option, although
- perhaps with less than optimal performance.
-
- Except where explicitly specified, acknowledgement of an option
- does not require the peer to take any additional action other than
- the default.
-
- It is not necessary to send the default values for the options in
- a Configure-Request.
-
-
- A summary of the Configuration Option format is shown below. The
- fields are transmitted from left to right.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Data ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-Simpson [Page 39]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Type
-
- The Type field is one octet, and indicates the type of
- Configuration Option. Up-to-date values of the LCP Option Type
- field are specified in the most recent "Assigned Numbers" RFC [2].
- This document concerns the following values:
-
- 0 RESERVED
- 1 Maximum-Receive-Unit
- 3 Authentication-Protocol
- 4 Quality-Protocol
- 5 Magic-Number
- 7 Protocol-Field-Compression
- 8 Address-and-Control-Field-Compression
-
-
- Length
-
- The Length field is one octet, and indicates the length of this
- Configuration Option including the Type, Length and Data fields.
-
- If a negotiable Configuration Option is received in a Configure-
- Request, but with an invalid or unrecognized Length, a Configure-
- Nak SHOULD be transmitted which includes the desired Configuration
- Option with an appropriate Length and Data.
-
- Data
-
- The Data field is zero or more octets, and contains information
- specific to the Configuration Option. The format and length of
- the Data field is determined by the Type and Length fields.
-
- When the Data field is indicated by the Length to extend beyond
- the end of the Information field, the entire packet is silently
- discarded without affecting the automaton.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 40]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-6.1. Maximum-Receive-Unit (MRU)
-
- Description
-
- This Configuration Option may be sent to inform the peer that the
- implementation can receive larger packets, or to request that the
- peer send smaller packets.
-
- The default value is 1500 octets. If smaller packets are
- requested, an implementation MUST still be able to receive the
- full 1500 octet information field in case link synchronization is
- lost.
-
- Implementation Note:
-
- This option is used to indicate an implementation capability.
- The peer is not required to maximize the use of the capacity.
- For example, when a MRU is indicated which is 2048 octets, the
- peer is not required to send any packet with 2048 octets. The
- peer need not Configure-Nak to indicate that it will only send
- smaller packets, since the implementation will always require
- support for at least 1500 octets.
-
- A summary of the Maximum-Receive-Unit Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Maximum-Receive-Unit |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 1
-
- Length
-
- 4
-
- Maximum-Receive-Unit
-
- The Maximum-Receive-Unit field is two octets, and specifies the
- maximum number of octets in the Information and Padding fields.
- It does not include the framing, Protocol field, FCS, nor any
- transparency bits or bytes.
-
-
-
-
-Simpson [Page 41]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-6.2. Authentication-Protocol
-
- Description
-
- On some links it may be desirable to require a peer to
- authenticate itself before allowing network-layer protocol packets
- to be exchanged.
-
- This Configuration Option provides a method to negotiate the use
- of a specific protocol for authentication. By default,
- authentication is not required.
-
- An implementation MUST NOT include multiple Authentication-
- Protocol Configuration Options in its Configure-Request packets.
- Instead, it SHOULD attempt to configure the most desirable
- protocol first. If that protocol is Configure-Nak'd, then the
- implementation SHOULD attempt the next most desirable protocol in
- the next Configure-Request.
-
- The implementation sending the Configure-Request is indicating
- that it expects authentication from its peer. If an
- implementation sends a Configure-Ack, then it is agreeing to
- authenticate with the specified protocol. An implementation
- receiving a Configure-Ack SHOULD expect the peer to authenticate
- with the acknowledged protocol.
-
- There is no requirement that authentication be full-duplex or that
- the same protocol be used in both directions. It is perfectly
- acceptable for different protocols to be used in each direction.
- This will, of course, depend on the specific protocols negotiated.
-
- A summary of the Authentication-Protocol Configuration Option format
- is shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Authentication-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
- Type
-
- 3
-
-
-
-
-
-Simpson [Page 42]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Length
-
- >= 4
-
- Authentication-Protocol
-
- The Authentication-Protocol field is two octets, and indicates the
- authentication protocol desired. Values for this field are always
- the same as the PPP Protocol field values for that same
- authentication protocol.
-
- Up-to-date values of the Authentication-Protocol field are
- specified in the most recent "Assigned Numbers" RFC [2]. Current
- values are assigned as follows:
-
- Value (in hex) Protocol
-
- c023 Password Authentication Protocol
- c223 Challenge Handshake Authentication Protocol
-
-
- Data
-
- The Data field is zero or more octets, and contains additional
- data as determined by the particular protocol.
-
-
-
-6.3. Quality-Protocol
-
- Description
-
- On some links it may be desirable to determine when, and how
- often, the link is dropping data. This process is called link
- quality monitoring.
-
- This Configuration Option provides a method to negotiate the use
- of a specific protocol for link quality monitoring. By default,
- link quality monitoring is disabled.
-
- The implementation sending the Configure-Request is indicating
- that it expects to receive monitoring information from its peer.
- If an implementation sends a Configure-Ack, then it is agreeing to
- send the specified protocol. An implementation receiving a
- Configure-Ack SHOULD expect the peer to send the acknowledged
- protocol.
-
- There is no requirement that quality monitoring be full-duplex or
-
-
-
-Simpson [Page 43]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- that the same protocol be used in both directions. It is
- perfectly acceptable for different protocols to be used in each
- direction. This will, of course, depend on the specific protocols
- negotiated.
-
- A summary of the Quality-Protocol Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Quality-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
- Type
-
- 4
-
- Length
-
- >= 4
-
- Quality-Protocol
-
- The Quality-Protocol field is two octets, and indicates the link
- quality monitoring protocol desired. Values for this field are
- always the same as the PPP Protocol field values for that same
- monitoring protocol.
-
- Up-to-date values of the Quality-Protocol field are specified in
- the most recent "Assigned Numbers" RFC [2]. Current values are
- assigned as follows:
-
- Value (in hex) Protocol
-
- c025 Link Quality Report
-
-
- Data
-
- The Data field is zero or more octets, and contains additional
- data as determined by the particular protocol.
-
-
-
-
-
-
-Simpson [Page 44]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-6.4. Magic-Number
-
- Description
-
- This Configuration Option provides a method to detect looped-back
- links and other Data Link Layer anomalies. This Configuration
- Option MAY be required by some other Configuration Options such as
- the Quality-Protocol Configuration Option. By default, the
- Magic-Number is not negotiated, and zero is inserted where a
- Magic-Number might otherwise be used.
-
- Before this Configuration Option is requested, an implementation
- MUST choose its Magic-Number. It is recommended that the Magic-
- Number be chosen in the most random manner possible in order to
- guarantee with very high probability that an implementation will
- arrive at a unique number. A good way to choose a unique random
- number is to start with a unique seed. Suggested sources of
- uniqueness include machine serial numbers, other network hardware
- addresses, time-of-day clocks, etc. Particularly good random
- number seeds are precise measurements of the inter-arrival time of
- physical events such as packet reception on other connected
- networks, server response time, or the typing rate of a human
- user. It is also suggested that as many sources as possible be
- used simultaneously.
-
- When a Configure-Request is received with a Magic-Number
- Configuration Option, the received Magic-Number is compared with
- the Magic-Number of the last Configure-Request sent to the peer.
- If the two Magic-Numbers are different, then the link is not
- looped-back, and the Magic-Number SHOULD be acknowledged. If the
- two Magic-Numbers are equal, then it is possible, but not certain,
- that the link is looped-back and that this Configure-Request is
- actually the one last sent. To determine this, a Configure-Nak
- MUST be sent specifying a different Magic-Number value. A new
- Configure-Request SHOULD NOT be sent to the peer until normal
- processing would cause it to be sent (that is, until a Configure-
- Nak is received or the Restart timer runs out).
-
- Reception of a Configure-Nak with a Magic-Number different from
- that of the last Configure-Nak sent to the peer proves that a link
- is not looped-back, and indicates a unique Magic-Number. If the
- Magic-Number is equal to the one sent in the last Configure-Nak,
- the possibility of a looped-back link is increased, and a new
- Magic-Number MUST be chosen. In either case, a new Configure-
- Request SHOULD be sent with the new Magic-Number.
-
- If the link is indeed looped-back, this sequence (transmit
- Configure-Request, receive Configure-Request, transmit Configure-
-
-
-
-Simpson [Page 45]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Nak, receive Configure-Nak) will repeat over and over again. If
- the link is not looped-back, this sequence might occur a few
- times, but it is extremely unlikely to occur repeatedly. More
- likely, the Magic-Numbers chosen at either end will quickly
- diverge, terminating the sequence. The following table shows the
- probability of collisions assuming that both ends of the link
- select Magic-Numbers with a perfectly uniform distribution:
-
- Number of Collisions Probability
- -------------------- ---------------------
- 1 1/2**32 = 2.3 E-10
- 2 1/2**32**2 = 5.4 E-20
- 3 1/2**32**3 = 1.3 E-29
-
-
- Good sources of uniqueness or randomness are required for this
- divergence to occur. If a good source of uniqueness cannot be
- found, it is recommended that this Configuration Option not be
- enabled; Configure-Requests with the option SHOULD NOT be
- transmitted and any Magic-Number Configuration Options which the
- peer sends SHOULD be either acknowledged or rejected. In this
- case, looped-back links cannot be reliably detected by the
- implementation, although they may still be detectable by the peer.
-
- If an implementation does transmit a Configure-Request with a
- Magic-Number Configuration Option, then it MUST NOT respond with a
- Configure-Reject when it receives a Configure-Request with a
- Magic-Number Configuration Option. That is, if an implementation
- desires to use Magic Numbers, then it MUST also allow its peer to
- do so. If an implementation does receive a Configure-Reject in
- response to a Configure-Request, it can only mean that the link is
- not looped-back, and that its peer will not be using Magic-
- Numbers. In this case, an implementation SHOULD act as if the
- negotiation had been successful (as if it had instead received a
- Configure-Ack).
-
- The Magic-Number also may be used to detect looped-back links
- during normal operation, as well as during Configuration Option
- negotiation. All LCP Echo-Request, Echo-Reply, and Discard-
- Request packets have a Magic-Number field. If Magic-Number has
- been successfully negotiated, an implementation MUST transmit
- these packets with the Magic-Number field set to its negotiated
- Magic-Number.
-
- The Magic-Number field of these packets SHOULD be inspected on
- reception. All received Magic-Number fields MUST be equal to
- either zero or the peer's unique Magic-Number, depending on
- whether or not the peer negotiated a Magic-Number.
-
-
-
-Simpson [Page 46]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- Reception of a Magic-Number field equal to the negotiated local
- Magic-Number indicates a looped-back link. Reception of a Magic-
- Number other than the negotiated local Magic-Number, the peer's
- negotiated Magic-Number, or zero if the peer didn't negotiate one,
- indicates a link which has been (mis)configured for communications
- with a different peer.
-
- Procedures for recovery from either case are unspecified, and may
- vary from implementation to implementation. A somewhat
- pessimistic procedure is to assume a LCP Down event. A further
- Open event will begin the process of re-establishing the link,
- which can't complete until the looped-back condition is
- terminated, and Magic-Numbers are successfully negotiated. A more
- optimistic procedure (in the case of a looped-back link) is to
- begin transmitting LCP Echo-Request packets until an appropriate
- Echo-Reply is received, indicating a termination of the looped-
- back condition.
-
- A summary of the Magic-Number Configuration Option format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Magic-Number
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Magic-Number (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 5
-
- Length
-
- 6
-
- Magic-Number
-
- The Magic-Number field is four octets, and indicates a number
- which is very likely to be unique to one end of the link. A
- Magic-Number of zero is illegal and MUST always be Nak'd, if it is
- not Rejected outright.
-
-
-
-
-
-
-
-Simpson [Page 47]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-6.5. Protocol-Field-Compression (PFC)
-
- Description
-
- This Configuration Option provides a method to negotiate the
- compression of the PPP Protocol field. By default, all
- implementations MUST transmit packets with two octet PPP Protocol
- fields.
-
- PPP Protocol field numbers are chosen such that some values may be
- compressed into a single octet form which is clearly
- distinguishable from the two octet form. This Configuration
- Option is sent to inform the peer that the implementation can
- receive such single octet Protocol fields.
-
- As previously mentioned, the Protocol field uses an extension
- mechanism consistent with the ISO 3309 extension mechanism for the
- Address field; the Least Significant Bit (LSB) of each octet is
- used to indicate extension of the Protocol field. A binary "0" as
- the LSB indicates that the Protocol field continues with the
- following octet. The presence of a binary "1" as the LSB marks
- the last octet of the Protocol field. Notice that any number of
- "0" octets may be prepended to the field, and will still indicate
- the same value (consider the two binary representations for 3,
- 00000011 and 00000000 00000011).
-
- When using low speed links, it is desirable to conserve bandwidth
- by sending as little redundant data as possible. The Protocol-
- Field-Compression Configuration Option allows a trade-off between
- implementation simplicity and bandwidth efficiency. If
- successfully negotiated, the ISO 3309 extension mechanism may be
- used to compress the Protocol field to one octet instead of two.
- The large majority of packets are compressible since data
- protocols are typically assigned with Protocol field values less
- than 256.
-
- Compressed Protocol fields MUST NOT be transmitted unless this
- Configuration Option has been negotiated. When negotiated, PPP
- implementations MUST accept PPP packets with either double-octet
- or single-octet Protocol fields, and MUST NOT distinguish between
- them.
-
- The Protocol field is never compressed when sending any LCP
- packet. This rule guarantees unambiguous recognition of LCP
- packets.
-
- When a Protocol field is compressed, the Data Link Layer FCS field
- is calculated on the compressed frame, not the original
-
-
-
-Simpson [Page 48]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
- uncompressed frame.
-
- A summary of the Protocol-Field-Compression Configuration Option
- format is shown below. The fields are transmitted from left to
- right.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 7
-
- Length
-
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 49]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-6.6. Address-and-Control-Field-Compression (ACFC)
-
- Description
-
- This Configuration Option provides a method to negotiate the
- compression of the Data Link Layer Address and Control fields. By
- default, all implementations MUST transmit frames with Address and
- Control fields appropriate to the link framing.
-
- Since these fields usually have constant values for point-to-point
- links, they are easily compressed. This Configuration Option is
- sent to inform the peer that the implementation can receive
- compressed Address and Control fields.
-
- If a compressed frame is received when Address-and-Control-Field-
- Compression has not been negotiated, the implementation MAY
- silently discard the frame.
-
- The Address and Control fields MUST NOT be compressed when sending
- any LCP packet. This rule guarantees unambiguous recognition of
- LCP packets.
-
- When the Address and Control fields are compressed, the Data Link
- Layer FCS field is calculated on the compressed frame, not the
- original uncompressed frame.
-
- A summary of the Address-and-Control-Field-Compression configuration
- option format is shown below. The fields are transmitted from left
- to right.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 8
-
- Length
-
- 2
-
-
-
-
-
-
-
-Simpson [Page 50]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-Security Considerations
-
- Security issues are briefly discussed in sections concerning the
- Authentication Phase, the Close event, and the Authentication-
- Protocol Configuration Option.
-
-
-
-References
-
- [1] Perkins, D., "Requirements for an Internet Standard Point-to-
- Point Protocol", RFC 1547, Carnegie Mellon University,
- December 1993.
-
- [2] Reynolds, J., and Postel, J., "Assigned Numbers", STD 2, RFC
- 1340, USC/Information Sciences Institute, July 1992.
-
-
-Acknowledgements
-
- This document is the product of the Point-to-Point Protocol Working
- Group of the Internet Engineering Task Force (IETF). Comments should
- be submitted to the ietf-ppp@merit.edu mailing list.
-
- Much of the text in this document is taken from the working group
- requirements [1]; and RFCs 1171 & 1172, by Drew Perkins while at
- Carnegie Mellon University, and by Russ Hobby of the University of
- California at Davis.
-
- William Simpson was principally responsible for introducing
- consistent terminology and philosophy, and the re-design of the phase
- and negotiation state machines.
-
- Many people spent significant time helping to develop the Point-to-
- Point Protocol. The complete list of people is too numerous to list,
- but the following people deserve special thanks: Rick Adams, Ken
- Adelman, Fred Baker, Mike Ballard, Craig Fox, Karl Fox, Phill Gross,
- Kory Hamzeh, former WG chair Russ Hobby, David Kaufman, former WG
- chair Steve Knowles, Mark Lewis, former WG chair Brian Lloyd, John
- LoVerso, Bill Melohn, Mike Patton, former WG chair Drew Perkins, Greg
- Satz, John Shriver, Vernon Schryver, and Asher Waldfogel.
-
- Special thanks to Morning Star Technologies for providing computing
- resources and network access support for writing this specification.
-
-
-
-
-
-
-
-Simpson [Page 51]
- RFC 1661 Point-to-Point Protocol July 1994
-
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Fred Baker
- Advanced Computer Communications
- 315 Bollay Drive
- Santa Barbara, California 93117
-
- fbaker@acc.com
-
-
-
-Editor's Address
-
- Questions about this memo can also be directed to:
-
- William Allen Simpson
- Daydreamer
- Computer Systems Consulting Services
- 1384 Fontaine
- Madison Heights, Michigan 48071
-
- Bill.Simpson@um.cc.umich.edu
- bsimpson@MorningStar.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 52]
-
-
diff --git a/doc/rfc1662.txt b/doc/rfc1662.txt
deleted file mode 100644
index 5a5b214..0000000
--- a/doc/rfc1662.txt
+++ /dev/null
@@ -1,1436 +0,0 @@
-
-
-
-
-
-
-
-Network Working Group W. Simpson, Editor
-Request for Comments: 1662 Daydreamer
-STD: 51 July 1994
-Obsoletes: 1549
-Category: Standards Track
-
-
- PPP in HDLC-like Framing
-
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method for
- transporting multi-protocol datagrams over point-to-point links.
-
- This document describes the use of HDLC-like framing for PPP
- encapsulated packets.
-
-
-Table of Contents
-
-
- 1. Introduction .......................................... 1
- 1.1 Specification of Requirements ................... 2
- 1.2 Terminology ..................................... 2
-
- 2. Physical Layer Requirements ........................... 3
-
- 3. The Data Link Layer ................................... 4
- 3.1 Frame Format .................................... 5
- 3.2 Modification of the Basic Frame ................. 7
-
- 4. Octet-stuffed framing ................................. 8
- 4.1 Flag Sequence ................................... 8
- 4.2 Transparency .................................... 8
- 4.3 Invalid Frames .................................. 9
- 4.4 Time Fill ....................................... 9
- 4.4.1 Octet-synchronous ............................... 9
- 4.4.2 Asynchronous .................................... 9
- 4.5 Transmission Considerations ..................... 10
- 4.5.1 Octet-synchronous ............................... 10
- 4.5.2 Asynchronous .................................... 10
-
-
-Simpson [Page i]
-RFC 1662 HDLC-like Framing July 1994
-
-
- 5. Bit-stuffed framing ................................... 11
- 5.1 Flag Sequence ................................... 11
- 5.2 Transparency .................................... 11
- 5.3 Invalid Frames .................................. 11
- 5.4 Time Fill ....................................... 11
- 5.5 Transmission Considerations ..................... 12
-
- 6. Asynchronous to Synchronous Conversion ................ 13
-
- 7. Additional LCP Configuration Options .................. 14
- 7.1 Async-Control-Character-Map (ACCM) .............. 14
-
- APPENDICES ................................................... 17
- A. Recommended LCP Options ............................... 17
- B. Automatic Recognition of PPP Frames ................... 17
- C. Fast Frame Check Sequence (FCS) Implementation ........ 18
- C.1 FCS table generator ............................. 18
- C.2 16-bit FCS Computation Method ................... 19
- C.3 32-bit FCS Computation Method ................... 21
-
- SECURITY CONSIDERATIONS ...................................... 24
- REFERENCES ................................................... 24
- ACKNOWLEDGEMENTS ............................................. 25
- CHAIR'S ADDRESS .............................................. 25
- EDITOR'S ADDRESS ............................................. 25
-
-
-
-
-1. Introduction
-
- This specification provides for framing over both bit-oriented and
- octet-oriented synchronous links, and asynchronous links with 8 bits
- of data and no parity. These links MUST be full-duplex, but MAY be
- either dedicated or circuit-switched.
-
- An escape mechanism is specified to allow control data such as
- XON/XOFF to be transmitted transparently over the link, and to remove
- spurious control data which may be injected into the link by
- intervening hardware and software.
-
- Some protocols expect error free transmission, and either provide
- error detection only on a conditional basis, or do not provide it at
- all. PPP uses the HDLC Frame Check Sequence for error detection.
- This is commonly available in hardware implementations, and a
- software implementation is provided.
-
-
-
-
-
-
-Simpson [Page 1]
-RFC 1662 HDLC-like Framing July 1994
-
-
-1.1. Specification of Requirements
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized.
-
- MUST This word, or the adjective "required", means that the
- definition is an absolute requirement of the specification.
-
- MUST NOT This phrase means that the definition is an absolute
- prohibition of the specification.
-
- SHOULD This word, or the adjective "recommended", means that there
- may exist valid reasons in particular circumstances to
- ignore this item, but the full implications must be
- understood and carefully weighed before choosing a
- different course.
-
- MAY This word, or the adjective "optional", means that this
- item is one of an allowed set of alternatives. An
- implementation which does not include this option MUST be
- prepared to interoperate with another implementation which
- does include the option.
-
-
-1.2. Terminology
-
- This document frequently uses the following terms:
-
- datagram The unit of transmission in the network layer (such as IP).
- A datagram may be encapsulated in one or more packets
- passed to the data link layer.
-
- frame The unit of transmission at the data link layer. A frame
- may include a header and/or a trailer, along with some
- number of units of data.
-
- packet The basic unit of encapsulation, which is passed across the
- interface between the network layer and the data link
- layer. A packet is usually mapped to a frame; the
- exceptions are when data link layer fragmentation is being
- performed, or when multiple packets are incorporated into a
- single frame.
-
- peer The other end of the point-to-point link.
-
- silently discard
- The implementation discards the packet without further
- processing. The implementation SHOULD provide the
- capability of logging the error, including the contents of
- the silently discarded packet, and SHOULD record the event
- in a statistics counter.
-
-
-Simpson [Page 2]
-RFC 1662 HDLC-like Framing July 1994
-
-
-2. Physical Layer Requirements
-
- PPP is capable of operating across most DTE/DCE interfaces (such as,
- EIA RS-232-E, EIA RS-422, and CCITT V.35). The only absolute
- requirement imposed by PPP is the provision of a full-duplex circuit,
- either dedicated or circuit-switched, which can operate in either an
- asynchronous (start/stop), bit-synchronous, or octet-synchronous
- mode, transparent to PPP Data Link Layer frames.
-
- Interface Format
-
- PPP presents an octet interface to the physical layer. There is
- no provision for sub-octets to be supplied or accepted.
-
- Transmission Rate
-
- PPP does not impose any restrictions regarding transmission rate,
- other than that of the particular DTE/DCE interface.
-
- Control Signals
-
- PPP does not require the use of control signals, such as Request
- To Send (RTS), Clear To Send (CTS), Data Carrier Detect (DCD), and
- Data Terminal Ready (DTR).
-
- When available, using such signals can allow greater functionality
- and performance. In particular, such signals SHOULD be used to
- signal the Up and Down events in the LCP Option Negotiation
- Automaton [1]. When such signals are not available, the
- implementation MUST signal the Up event to LCP upon
- initialization, and SHOULD NOT signal the Down event.
-
- Because signalling is not required, the physical layer MAY be
- decoupled from the data link layer, hiding the transient details
- of the physical transport. This has implications for mobility in
- cellular radio networks, and other rapidly switching links.
-
- When moving from cell to cell within the same zone, an
- implementation MAY choose to treat the entire zone as a single
- link, even though transmission is switched among several
- frequencies. The link is considered to be with the central
- control unit for the zone, rather than the individual cell
- transceivers. However, the link SHOULD re-establish its
- configuration whenever the link is switched to a different
- administration.
-
- Due to the bursty nature of data traffic, some implementations
- have choosen to disconnect the physical layer during periods of
-
-
-
-Simpson [Page 3]
-RFC 1662 HDLC-like Framing July 1994
-
-
- inactivity, and reconnect when traffic resumes, without informing
- the data link layer. Robust implementations should avoid using
- this trick over-zealously, since the price for decreased setup
- latency is decreased security. Implementations SHOULD signal the
- Down event whenever "significant time" has elapsed since the link
- was disconnected. The value for "significant time" is a matter of
- considerable debate, and is based on the tariffs, call setup
- times, and security concerns of the installation.
-
-
-
-3. The Data Link Layer
-
- PPP uses the principles described in ISO 3309-1979 HDLC frame
- structure, most recently the fourth edition 3309:1991 [2], which
- specifies modifications to allow HDLC use in asynchronous
- environments.
-
- The PPP control procedures use the Control field encodings described
- in ISO 4335-1979 HDLC elements of procedures, most recently the
- fourth edition 4335:1991 [4].
-
- This should not be construed to indicate that every feature of the
- above recommendations are included in PPP. Each feature included
- is explicitly described in the following sections.
-
- To remain consistent with standard Internet practice, and avoid
- confusion for people used to reading RFCs, all binary numbers in the
- following descriptions are in Most Significant Bit to Least
- Significant Bit order, reading from left to right, unless otherwise
- indicated. Note that this is contrary to standard ISO and CCITT
- practice which orders bits as transmitted (network bit order). Keep
- this in mind when comparing this document with the international
- standards documents.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 4]
-RFC 1662 HDLC-like Framing July 1994
-
-
-3.1. Frame Format
-
- A summary of the PPP HDLC-like frame structure is shown below. This
- figure does not include bits inserted for synchronization (such as
- start and stop bits for asynchronous links), nor any bits or octets
- inserted for transparency. The fields are transmitted from left to
- right.
-
- +----------+----------+----------+
- | Flag | Address | Control |
- | 01111110 | 11111111 | 00000011 |
- +----------+----------+----------+
- +----------+-------------+---------+
- | Protocol | Information | Padding |
- | 8/16 bits| * | * |
- +----------+-------------+---------+
- +----------+----------+-----------------
- | FCS | Flag | Inter-frame Fill
- |16/32 bits| 01111110 | or next Address
- +----------+----------+-----------------
-
- The Protocol, Information and Padding fields are described in the
- Point-to-Point Protocol Encapsulation [1].
-
- Flag Sequence
-
- Each frame begins and ends with a Flag Sequence, which is the
- binary sequence 01111110 (hexadecimal 0x7e). All implementations
- continuously check for this flag, which is used for frame
- synchronization.
-
- Only one Flag Sequence is required between two frames. Two
- consecutive Flag Sequences constitute an empty frame, which is
- silently discarded, and not counted as a FCS error.
-
- Address Field
-
- The Address field is a single octet, which contains the binary
- sequence 11111111 (hexadecimal 0xff), the All-Stations address.
- Individual station addresses are not assigned. The All-Stations
- address MUST always be recognized and received.
-
- The use of other address lengths and values may be defined at a
- later time, or by prior agreement. Frames with unrecognized
- Addresses SHOULD be silently discarded.
-
-
-
-
-
-
-Simpson [Page 5]
-RFC 1662 HDLC-like Framing July 1994
-
-
- Control Field
-
- The Control field is a single octet, which contains the binary
- sequence 00000011 (hexadecimal 0x03), the Unnumbered Information
- (UI) command with the Poll/Final (P/F) bit set to zero.
-
- The use of other Control field values may be defined at a later
- time, or by prior agreement. Frames with unrecognized Control
- field values SHOULD be silently discarded.
-
- Frame Check Sequence (FCS) Field
-
- The Frame Check Sequence field defaults to 16 bits (two octets).
- The FCS is transmitted least significant octet first, which
- contains the coefficient of the highest term.
-
- A 32-bit (four octet) FCS is also defined. Its use may be
- negotiated as described in "PPP LCP Extensions" [5].
-
- The use of other FCS lengths may be defined at a later time, or by
- prior agreement.
-
- The FCS field is calculated over all bits of the Address, Control,
- Protocol, Information and Padding fields, not including any start
- and stop bits (asynchronous) nor any bits (synchronous) or octets
- (asynchronous or synchronous) inserted for transparency. This
- also does not include the Flag Sequences nor the FCS field itself.
-
- When octets are received which are flagged in the Async-
- Control-Character-Map, they are discarded before calculating
- the FCS.
-
- For more information on the specification of the FCS, see the
- Appendices.
-
- The end of the Information and Padding fields is found by locating
- the closing Flag Sequence and removing the Frame Check Sequence
- field.
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 6]
-RFC 1662 HDLC-like Framing July 1994
-
-
-3.2. Modification of the Basic Frame
-
- The Link Control Protocol can negotiate modifications to the standard
- HDLC-like frame structure. However, modified frames will always be
- clearly distinguishable from standard frames.
-
- Address-and-Control-Field-Compression
-
- When using the standard HDLC-like framing, the Address and Control
- fields contain the hexadecimal values 0xff and 0x03 respectively.
- When other Address or Control field values are in use, Address-
- and-Control-Field-Compression MUST NOT be negotiated.
-
- On transmission, compressed Address and Control fields are simply
- omitted.
-
- On reception, the Address and Control fields are decompressed by
- examining the first two octets. If they contain the values 0xff
- and 0x03, they are assumed to be the Address and Control fields.
- If not, it is assumed that the fields were compressed and were not
- transmitted.
-
- By definition, the first octet of a two octet Protocol field
- will never be 0xff (since it is not even). The Protocol field
- value 0x00ff is not allowed (reserved) to avoid ambiguity when
- Protocol-Field-Compression is enabled and the first Information
- field octet is 0x03.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 7]
-RFC 1662 HDLC-like Framing July 1994
-
-
-4. Octet-stuffed framing
-
- This chapter summarizes the use of HDLC-like framing with 8-bit
- asynchronous and octet-synchronous links.
-
-
-
-4.1. Flag Sequence
-
- The Flag Sequence indicates the beginning or end of a frame. The
- octet stream is examined on an octet-by-octet basis for the value
- 01111110 (hexadecimal 0x7e).
-
-
-
-4.2. Transparency
-
- An octet stuffing procedure is used. The Control Escape octet is
- defined as binary 01111101 (hexadecimal 0x7d), most significant bit
- first.
-
- As a minimum, sending implementations MUST escape the Flag Sequence
- and Control Escape octets.
-
- After FCS computation, the transmitter examines the entire frame
- between the two Flag Sequences. Each Flag Sequence, Control Escape
- octet, and any octet which is flagged in the sending Async-Control-
- Character-Map (ACCM), is replaced by a two octet sequence consisting
- of the Control Escape octet followed by the original octet
- exclusive-or'd with hexadecimal 0x20.
-
- This is bit 5 complemented, where the bit positions are numbered
- 76543210 (the 6th bit as used in ISO numbered 87654321 -- BEWARE
- when comparing documents).
-
- Receiving implementations MUST correctly process all Control Escape
- sequences.
-
- On reception, prior to FCS computation, each octet with value less
- than hexadecimal 0x20 is checked. If it is flagged in the receiving
- ACCM, it is simply removed (it may have been inserted by intervening
- data communications equipment). Each Control Escape octet is also
- removed, and the following octet is exclusive-or'd with hexadecimal
- 0x20, unless it is the Flag Sequence (which aborts a frame).
-
- A few examples may make this more clear. Escaped data is transmitted
- on the link as follows:
-
-
-
-
-Simpson [Page 8]
-RFC 1662 HDLC-like Framing July 1994
-
-
-
- 0x7e is encoded as 0x7d, 0x5e. (Flag Sequence)
- 0x7d is encoded as 0x7d, 0x5d. (Control Escape)
- 0x03 is encoded as 0x7d, 0x23. (ETX)
-
- Some modems with software flow control may intercept outgoing DC1 and
- DC3 ignoring the 8th (parity) bit. This data would be transmitted on
- the link as follows:
-
- 0x11 is encoded as 0x7d, 0x31. (XON)
- 0x13 is encoded as 0x7d, 0x33. (XOFF)
- 0x91 is encoded as 0x7d, 0xb1. (XON with parity set)
- 0x93 is encoded as 0x7d, 0xb3. (XOFF with parity set)
-
-
-
-
-4.3. Invalid Frames
-
- Frames which are too short (less than 4 octets when using the 16-bit
- FCS), or which end with a Control Escape octet followed immediately
- by a closing Flag Sequence, or in which octet-framing is violated (by
- transmitting a "0" stop bit where a "1" bit is expected), are
- silently discarded, and not counted as a FCS error.
-
-
-
-4.4. Time Fill
-
-4.4.1. Octet-synchronous
-
- There is no provision for inter-octet time fill.
-
- The Flag Sequence MUST be transmitted during inter-frame time fill.
-
-
-4.4.2. Asynchronous
-
- Inter-octet time fill MUST be accomplished by transmitting continuous
- "1" bits (mark-hold state).
-
- Inter-frame time fill can be viewed as extended inter-octet time
- fill. Doing so can save one octet for every frame, decreasing delay
- and increasing bandwidth. This is possible since a Flag Sequence may
- serve as both a frame end and a frame begin. After having received
- any frame, an idle receiver will always be in a frame begin state.
-
-
-
-
-Simpson [Page 9]
-RFC 1662 HDLC-like Framing July 1994
-
-
- Robust transmitters should avoid using this trick over-zealously,
- since the price for decreased delay is decreased reliability. Noisy
- links may cause the receiver to receive garbage characters and
- interpret them as part of an incoming frame. If the transmitter does
- not send a new opening Flag Sequence before sending the next frame,
- then that frame will be appended to the noise characters causing an
- invalid frame (with high reliability).
-
- It is suggested that implementations will achieve the best results by
- always sending an opening Flag Sequence if the new frame is not
- back-to-back with the last. Transmitters SHOULD send an open Flag
- Sequence whenever "appreciable time" has elapsed after the prior
- closing Flag Sequence. The maximum value for "appreciable time" is
- likely to be no greater than the typing rate of a slow typist, about
- 1 second.
-
-
-
-4.5. Transmission Considerations
-
-4.5.1. Octet-synchronous
-
- The definition of various encodings and scrambling is the
- responsibility of the DTE/DCE equipment in use, and is outside the
- scope of this specification.
-
-
-4.5.2. Asynchronous
-
- All octets are transmitted least significant bit first, with one
- start bit, eight bits of data, and one stop bit. There is no
- provision for seven bit asynchronous links.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 10]
-RFC 1662 HDLC-like Framing July 1994
-
-
-5. Bit-stuffed framing
-
- This chapter summarizes the use of HDLC-like framing with bit-
- synchronous links.
-
-
-
-5.1. Flag Sequence
-
- The Flag Sequence indicates the beginning or end of a frame, and is
- used for frame synchronization. The bit stream is examined on a
- bit-by-bit basis for the binary sequence 01111110 (hexadecimal 0x7e).
-
- The "shared zero mode" Flag Sequence "011111101111110" SHOULD NOT be
- used. When not avoidable, such an implementation MUST ensure that
- the first Flag Sequence detected (the end of the frame) is promptly
- communicated to the link layer. Use of the shared zero mode hinders
- interoperability with bit-synchronous to asynchronous and bit-
- synchronous to octet-synchronous converters.
-
-
-
-5.2. Transparency
-
- After FCS computation, the transmitter examines the entire frame
- between the two Flag Sequences. A "0" bit is inserted after all
- sequences of five contiguous "1" bits (including the last 5 bits of
- the FCS) to ensure that a Flag Sequence is not simulated.
-
- On reception, prior to FCS computation, any "0" bit that directly
- follows five contiguous "1" bits is discarded.
-
-
-
-5.3. Invalid Frames
-
- Frames which are too short (less than 4 octets when using the 16-bit
- FCS), or which end with a sequence of more than six "1" bits, are
- silently discarded, and not counted as a FCS error.
-
-
-
-5.4. Time Fill
-
- There is no provision for inter-octet time fill.
-
- The Flag Sequence SHOULD be transmitted during inter-frame time fill.
- However, certain types of circuit-switched links require the use of
-
-
-
-Simpson [Page 11]
-RFC 1662 HDLC-like Framing July 1994
-
-
- mark idle (continuous ones), particularly those that calculate
- accounting based on periods of bit activity. When mark idle is used
- on a bit-synchronous link, the implementation MUST ensure at least 15
- consecutive "1" bits between Flags during the idle period, and that
- the Flag Sequence is always generated at the beginning of a frame
- after an idle period.
-
- This differs from practice in ISO 3309, which allows 7 to 14 bit
- mark idle.
-
-
-
-5.5. Transmission Considerations
-
- All octets are transmitted least significant bit first.
-
- The definition of various encodings and scrambling is the
- responsibility of the DTE/DCE equipment in use, and is outside the
- scope of this specification.
-
- While PPP will operate without regard to the underlying
- representation of the bit stream, lack of standards for transmission
- will hinder interoperability as surely as lack of data link
- standards. At speeds of 56 Kbps through 2.0 Mbps, NRZ is currently
- most widely available, and on that basis is recommended as a default.
-
- When configuration of the encoding is allowed, NRZI is recommended as
- an alternative, because of its relative immunity to signal inversion
- configuration errors, and instances when it MAY allow connection
- without an expensive DSU/CSU. Unfortunately, NRZI encoding
- exacerbates the missing x1 factor of the 16-bit FCS, so that one
- error in 2**15 goes undetected (instead of one in 2**16), and triple
- errors are not detected. Therefore, when NRZI is in use, it is
- recommended that the 32-bit FCS be negotiated, which includes the x1
- factor.
-
- At higher speeds of up to 45 Mbps, some implementors have chosen the
- ANSI High Speed Synchronous Interface [HSSI]. While this experience
- is currently limited, implementors are encouraged to cooperate in
- choosing transmission encoding.
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 12]
-RFC 1662 HDLC-like Framing July 1994
-
-
-6. Asynchronous to Synchronous Conversion
-
- There may be some use of asynchronous-to-synchronous converters (some
- built into modems and cellular interfaces), resulting in an
- asynchronous PPP implementation on one end of a link and a
- synchronous implementation on the other. It is the responsibility of
- the converter to do all stuffing conversions during operation.
-
- To enable this functionality, synchronous PPP implementations MUST
- always respond to the Async-Control-Character-Map Configuration
- Option with the LCP Configure-Ack. However, acceptance of the
- Configuration Option does not imply that the synchronous
- implementation will do any ACCM mapping. Instead, all such octet
- mapping will be performed by the asynchronous-to-synchronous
- converter.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 13]
-RFC 1662 HDLC-like Framing July 1994
-
-
-7. Additional LCP Configuration Options
-
- The Configuration Option format and basic options are already defined
- for LCP [1].
-
- Up-to-date values of the LCP Option Type field are specified in the
- most recent "Assigned Numbers" RFC [10]. This document concerns the
- following values:
-
- 2 Async-Control-Character-Map
-
-
-
-
-7.1. Async-Control-Character-Map (ACCM)
-
- Description
-
- This Configuration Option provides a method to negotiate the use
- of control character transparency on asynchronous links.
-
- Each end of the asynchronous link maintains two Async-Control-
- Character-Maps. The receiving ACCM is 32 bits, but the sending
- ACCM may be up to 256 bits. This results in four distinct ACCMs,
- two in each direction of the link.
-
- For asynchronous links, the default receiving ACCM is 0xffffffff.
- The default sending ACCM is 0xffffffff, plus the Control Escape
- and Flag Sequence characters themselves, plus whatever other
- outgoing characters are flagged (by prior configuration) as likely
- to be intercepted.
-
- For other types of links, the default value is 0, since there is
- no need for mapping.
-
- The default inclusion of all octets less than hexadecimal 0x20
- allows all ASCII control characters [6] excluding DEL (Delete)
- to be transparently communicated through all known data
- communications equipment.
-
- The transmitter MAY also send octets with values in the range 0x40
- through 0xff (except 0x5e) in Control Escape format. Since these
- octet values are not negotiable, this does not solve the problem
- of receivers which cannot handle all non-control characters.
- Also, since the technique does not affect the 8th bit, this does
- not solve problems for communications links that can send only 7-
- bit characters.
-
-
-
-
-Simpson [Page 14]
-RFC 1662 HDLC-like Framing July 1994
-
-
- Note that this specification differs in detail from later
- amendments, such as 3309:1991/Amendment 2 [3]. However, such
- "extended transparency" is applied only by "prior agreement".
- Use of the transparency methods in this specification
- constitute a prior agreement with respect to PPP.
-
- For compatibility with 3309:1991/Amendment 2, the transmitter
- MAY escape DEL and ACCM equivalents with the 8th (most
- significant) bit set. No change is required in the receiving
- algorithm.
-
- Following ACCM negotiation, the transmitter SHOULD cease
- escaping DEL.
-
- However, it is rarely necessary to map all control characters, and
- often it is unnecessary to map any control characters. The
- Configuration Option is used to inform the peer which control
- characters MUST remain mapped when the peer sends them.
-
- The peer MAY still send any other octets in mapped format, if it
- is necessary because of constraints known to the peer. The peer
- SHOULD Configure-Nak with the logical union of the sets of mapped
- octets, so that when such octets are spuriously introduced they
- can be ignored on receipt.
-
- A summary of the Async-Control-Character-Map Configuration Option
- format is shown below. The fields are transmitted from left to
- right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | ACCM
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- ACCM (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 2
-
- Length
-
- 6
-
-
-
-
-
-
-Simpson [Page 15]
-RFC 1662 HDLC-like Framing July 1994
-
-
- ACCM
-
- The ACCM field is four octets, and indicates the set of control
- characters to be mapped. The map is sent most significant octet
- first.
-
- Each numbered bit corresponds to the octet of the same value. If
- the bit is cleared to zero, then that octet need not be mapped.
- If the bit is set to one, then that octet MUST remain mapped. For
- example, if bit 19 is set to zero, then the ASCII control
- character 19 (DC3, Control-S) MAY be sent in the clear.
-
- Note: The least significant bit of the least significant octet
- (the final octet transmitted) is numbered bit 0, and would map
- to the ASCII control character NUL.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 16]
-RFC 1662 HDLC-like Framing July 1994
-
-
-A. Recommended LCP Options
-
- The following Configurations Options are recommended:
-
- High Speed links
-
- Magic Number
- Link Quality Monitoring
- No Address and Control Field Compression
- No Protocol Field Compression
-
-
- Low Speed or Asynchronous links
-
- Async Control Character Map
- Magic Number
- Address and Control Field Compression
- Protocol Field Compression
-
-
-
-B. Automatic Recognition of PPP Frames
-
- It is sometimes desirable to detect PPP frames, for example during a
- login sequence. The following octet sequences all begin valid PPP
- LCP frames:
-
- 7e ff 03 c0 21
- 7e ff 7d 23 c0 21
- 7e 7d df 7d 23 c0 21
-
- Note that the first two forms are not a valid username for Unix.
- However, only the third form generates a correctly checksummed PPP
- frame, whenever 03 and ff are taken as the control characters ETX and
- DEL without regard to parity (they are correct for an even parity
- link) and discarded.
-
- Many implementations deal with this by putting the interface into
- packet mode when one of the above username patterns are detected
- during login, without examining the initial PPP checksum. The
- initial incoming PPP frame is discarded, but a Configure-Request is
- sent immediately.
-
-
-
-
-
-
-
-
-
-Simpson [Page 17]
-RFC 1662 HDLC-like Framing July 1994
-
-
-C. Fast Frame Check Sequence (FCS) Implementation
-
- The FCS was originally designed with hardware implementations in
- mind. A serial bit stream is transmitted on the wire, the FCS is
- calculated over the serial data as it goes out, and the complement of
- the resulting FCS is appended to the serial stream, followed by the
- Flag Sequence.
-
- The receiver has no way of determining that it has finished
- calculating the received FCS until it detects the Flag Sequence.
- Therefore, the FCS was designed so that a particular pattern results
- when the FCS operation passes over the complemented FCS. A good
- frame is indicated by this "good FCS" value.
-
-
-
-C.1. FCS table generator
-
- The following code creates the lookup table used to calculate the
- FCS-16.
-
- /*
- * Generate a FCS-16 table.
- *
- * Drew D. Perkins at Carnegie Mellon University.
- *
- * Code liberally borrowed from Mohsen Banan and D. Hugh Redelmeier.
- */
-
- /*
- * The FCS-16 generator polynomial: x**0 + x**5 + x**12 + x**16.
- */
- #define P 0x8408
-
-
- main()
- {
- register unsigned int b, v;
- register int i;
-
- printf("typedef unsigned short u16;\n");
- printf("static u16 fcstab[256] = {");
- for (b = 0; ; ) {
- if (b % 8 == 0)
- printf("\n");
-
- v = b;
- for (i = 8; i--; )
-
-
-
-Simpson [Page 18]
-RFC 1662 HDLC-like Framing July 1994
-
-
- v = v & 1 ? (v >> 1) ^ P : v >> 1;
-
- printf("\t0x%04x", v & 0xFFFF);
- if (++b == 256)
- break;
- printf(",");
- }
- printf("\n};\n");
- }
-
-
-
-C.2. 16-bit FCS Computation Method
-
- The following code provides a table lookup computation for
- calculating the Frame Check Sequence as data arrives at the
- interface. This implementation is based on [7], [8], and [9].
-
- /*
- * u16 represents an unsigned 16-bit number. Adjust the typedef for
- * your hardware.
- */
- typedef unsigned short u16;
-
- /*
- * FCS lookup table as calculated by the table generator.
- */
- static u16 fcstab[256] = {
- 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
- 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
- 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
- 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
- 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
- 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
- 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
- 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
- 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
- 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
- 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
- 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
- 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
- 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
- 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
- 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
- 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
- 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
- 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
- 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
-
-
-
-Simpson [Page 19]
-RFC 1662 HDLC-like Framing July 1994
-
-
- 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
- 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
- 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
- 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
- 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
- 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
- 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
- 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
- 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
- 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
- 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
- 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
- };
-
- #define PPPINITFCS16 0xffff /* Initial FCS value */
- #define PPPGOODFCS16 0xf0b8 /* Good final FCS value */
-
- /*
- * Calculate a new fcs given the current fcs and the new data.
- */
- u16 pppfcs16(fcs, cp, len)
- register u16 fcs;
- register unsigned char *cp;
- register int len;
- {
- ASSERT(sizeof (u16) == 2);
- ASSERT(((u16) -1) > 0);
- while (len--)
- fcs = (fcs >> 8) ^ fcstab[(fcs ^ *cp++) & 0xff];
-
- return (fcs);
- }
-
- /*
- * How to use the fcs
- */
- tryfcs16(cp, len)
- register unsigned char *cp;
- register int len;
- {
- u16 trialfcs;
-
- /* add on output */
- trialfcs = pppfcs16( PPPINITFCS16, cp, len );
- trialfcs ^= 0xffff; /* complement */
- cp[len] = (trialfcs & 0x00ff); /* least significant byte first */
- cp[len+1] = ((trialfcs >> 8) & 0x00ff);
-
-
-
-
-Simpson [Page 20]
-RFC 1662 HDLC-like Framing July 1994
-
-
- /* check on input */
- trialfcs = pppfcs16( PPPINITFCS16, cp, len + 2 );
- if ( trialfcs == PPPGOODFCS16 )
- printf("Good FCS\n");
- }
-
-
-
-C.3. 32-bit FCS Computation Method
-
- The following code provides a table lookup computation for
- calculating the 32-bit Frame Check Sequence as data arrives at the
- interface.
-
- /*
- * The FCS-32 generator polynomial: x**0 + x**1 + x**2 + x**4 + x**5
- * + x**7 + x**8 + x**10 + x**11 + x**12 + x**16
- * + x**22 + x**23 + x**26 + x**32.
- */
-
- /*
- * u32 represents an unsigned 32-bit number. Adjust the typedef for
- * your hardware.
- */
- typedef unsigned long u32;
-
- static u32 fcstab_32[256] =
- {
- 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
- 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
- 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
- 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
- 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
- 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
- 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
- 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
- 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
- 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
- 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
- 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
- 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
- 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
- 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
- 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
- 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
- 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
- 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
- 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
-
-
-
-Simpson [Page 21]
-RFC 1662 HDLC-like Framing July 1994
-
-
- 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
- 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
- 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
- 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
- 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
- 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
- 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
- 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
- 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
- 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
- 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
- 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
- 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
- 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
- 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
- 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
- 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
- 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
- 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
- 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
- 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
- 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
- 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
- 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
- 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
- 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
- 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
- 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
- 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
- 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
- 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
- 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
- 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
- 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
- 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
- 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
- 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
- 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
- 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
- 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
- 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
- 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
- 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
- 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
- };
-
- #define PPPINITFCS32 0xffffffff /* Initial FCS value */
- #define PPPGOODFCS32 0xdebb20e3 /* Good final FCS value */
-
-
-
-Simpson [Page 22]
-RFC 1662 HDLC-like Framing July 1994
-
-
- /*
- * Calculate a new FCS given the current FCS and the new data.
- */
- u32 pppfcs32(fcs, cp, len)
- register u32 fcs;
- register unsigned char *cp;
- register int len;
- {
- ASSERT(sizeof (u32) == 4);
- ASSERT(((u32) -1) > 0);
- while (len--)
- fcs = (((fcs) >> 8) ^ fcstab_32[((fcs) ^ (*cp++)) & 0xff]);
-
- return (fcs);
- }
-
- /*
- * How to use the fcs
- */
- tryfcs32(cp, len)
- register unsigned char *cp;
- register int len;
- {
- u32 trialfcs;
-
- /* add on output */
- trialfcs = pppfcs32( PPPINITFCS32, cp, len );
- trialfcs ^= 0xffffffff; /* complement */
- cp[len] = (trialfcs & 0x00ff); /* least significant byte first */
- cp[len+1] = ((trialfcs >>= 8) & 0x00ff);
- cp[len+2] = ((trialfcs >>= 8) & 0x00ff);
- cp[len+3] = ((trialfcs >> 8) & 0x00ff);
-
- /* check on input */
- trialfcs = pppfcs32( PPPINITFCS32, cp, len + 4 );
- if ( trialfcs == PPPGOODFCS32 )
- printf("Good FCS\n");
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 23]
-RFC 1662 HDLC-like Framing July 1994
-
-
-Security Considerations
-
- As noted in the Physical Layer Requirements section, the link layer
- might not be informed when the connected state of the physical layer
- has changed. This results in possible security lapses due to over-
- reliance on the integrity and security of switching systems and
- administrations. An insertion attack might be undetected. An
- attacker which is able to spoof the same calling identity might be
- able to avoid link authentication.
-
-
-
-References
-
- [1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)",
- STD 50, RFC 1661, Daydreamer, July 1994.
-
- [2] ISO/IEC 3309:1991(E), "Information Technology -
- Telecommunications and information exchange between systems -
- High-level data link control (HDLC) procedures - Frame
- structure", International Organization For Standardization,
- Fourth edition 1991-06-01.
-
- [3] ISO/IEC 3309:1991/Amd.2:1992(E), "Information Technology -
- Telecommunications and information exchange between systems -
- High-level data link control (HDLC) procedures - Frame
- structure - Amendment 2: Extended transparency options for
- start/stop transmission", International Organization For
- Standardization, 1992-01-15.
-
- [4] ISO/IEC 4335:1991(E), "Information Technology -
- Telecommunications and information exchange between systems -
- High-level data link control (HDLC) procedures - Elements of
- procedures", International Organization For Standardization,
- Fourth edition 1991-09-15.
-
- [5] Simpson, W., Editor, "PPP LCP Extensions", RFC 1570,
- Daydreamer, January 1994.
-
- [6] ANSI X3.4-1977, "American National Standard Code for
- Information Interchange", American National Standards
- Institute, 1977.
-
- [7] Perez, "Byte-wise CRC Calculations", IEEE Micro, June 1983.
-
- [8] Morse, G., "Calculating CRC's by Bits and Bytes", Byte,
- September 1986.
-
-
-
-
-Simpson [Page 24]
-RFC 1662 HDLC-like Framing July 1994
-
-
- [9] LeVan, J., "A Fast CRC", Byte, November 1987.
-
- [10] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC
- 1340, USC/Information Sciences Institute, July 1992.
-
-
-
-Acknowledgements
-
- This document is the product of the Point-to-Point Protocol Working
- Group of the Internet Engineering Task Force (IETF). Comments should
- be submitted to the ietf-ppp@merit.edu mailing list.
-
- This specification is based on previous RFCs, where many
- contributions have been acknowleged.
-
- The 32-bit FCS example code was provided by Karl Fox (Morning Star
- Technologies).
-
- Special thanks to Morning Star Technologies for providing computing
- resources and network access support for writing this specification.
-
-
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Fred Baker
- Advanced Computer Communications
- 315 Bollay Drive
- Santa Barbara, California 93117
-
- fbaker@acc.com
-
-
-Editor's Address
-
- Questions about this memo can also be directed to:
-
- William Allen Simpson
- Daydreamer
- Computer Systems Consulting Services
- 1384 Fontaine
- Madison Heights, Michigan 48071
-
- Bill.Simpson@um.cc.umich.edu
- bsimpson@MorningStar.com
-
-
-Simpson [Page 25]
diff --git a/doc/rfc1701.txt b/doc/rfc1701.txt
deleted file mode 100644
index 60a0e9b..0000000
--- a/doc/rfc1701.txt
+++ /dev/null
@@ -1,451 +0,0 @@
-
-
-
-
-
-
-Network Working Group S. Hanks
-Request for Comments: 1701 NetSmiths, Ltd.
-Category: Informational T. Li
- D. Farinacci
- P. Traina
- cisco Systems
- October 1994
-
-
- Generic Routing Encapsulation (GRE)
-
-Status of this Memo
-
-
- This memo provides information for the Internet community. This memo
- does not specify an Internet standard of any kind. Distribution of
- this memo is unlimited.
-
-Abstract
-
- This document specifies a protocol for performing encapsulation of an
- arbitrary network layer protocol over another arbitrary network layer
- protocol.
-
-Introduction
-
- A number of different proposals [RFC 1234, RFC 1226] currently exist
- for the encapsulation of one protocol over another protocol. Other
- types of encapsulations [RFC 1241, SDRP, RFC 1479] have been proposed
- for transporting IP over IP for policy purposes. This memo describes
- a protocol which is very similar to, but is more general than, the
- above proposals. In attempting to be more general, many protocol
- specific nuances have been ignored. The result is that this proposal
- is may be less suitable for a situation where a specific "X over Y"
- encapsulation has been described. It is the attempt of this protocol
- to provide a simple, general purpose mechanism which is reduces the
- problem of encapsulation from its current O(n^2) problem to a more
- manageable state. This proposal also attempts to provide a
- lightweight encapsulation for use in policy based routing. This memo
- explicitly does not address the issue of when a packet should be
- encapsulated. This memo acknowledges, but does not address problems
- with mutual encapsulation [RFC 1326].
-
- In the most general case, a system has a packet that needs to be
- encapsulated and routed. We will call this the payload packet. The
- payload is first encapsulated in a GRE packet, which possibly also
- includes a route. The resulting GRE packet can then be encapsulated
- in some other protocol and then forwarded. We will call this outer
-
-
-
-Hanks, Li, Farinacci & Traina [Page 1]
-
-RFC 1701 Generic Routing Encapsulation (GRE) October 1994
-
-
- protocol the delivery protocol. The algorithms for processing this
- packet are discussed later.
-
-Overall packet
-
- The entire encapsulated packet would then have the form:
-
- ---------------------------------
- | |
- | Delivery Header |
- | |
- ---------------------------------
- | |
- | GRE Header |
- | |
- ---------------------------------
- | |
- | Payload packet |
- | |
- ---------------------------------
-
-Packet header
-
- The GRE packet header has the form:
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |C|R|K|S|s|Recur| Flags | Ver | Protocol Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Checksum (optional) | Offset (optional) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key (optional) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Sequence Number (optional) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Routing (optional)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Flags and version (2 octets)
-
- The GRE flags are encoded in the first two octets. Bit 0 is the
- most significant bit, bit 15 is the least significant bit. Bits
- 13 through 15 are reserved for the Version field. Bits 5 through
- 12 are reserved for future use and MUST be transmitted as zero.
-
-
-
-
-
-
-Hanks, Li, Farinacci & Traina [Page 2]
-
-RFC 1701 Generic Routing Encapsulation (GRE) October 1994
-
-
- Checksum Present (bit 0)
-
- If the Checksum Present bit is set to 1, then the Checksum field
- is present and contains valid information.
-
- If either the Checksum Present bit or the Routing Present bit are
- set, BOTH the Checksum and Offset fields are present in the GRE
- packet.
-
- Routing Present (bit 1)
-
- If the Routing Present bit is set to 1, then it indicates that the
- Offset and Routing fields are present and contain valid
- information.
-
- If either the Checksum Present bit or the Routing Present bit are
- set, BOTH the Checksum and Offset fields are present in the GRE
- packet.
-
- Key Present (bit 2)
-
- If the Key Present bit is set to 1, then it indicates that the Key
- field is present in the GRE header. Otherwise, the Key field is
- not present in the GRE header.
-
- Sequence Number Present (bit 3)
-
- If the Sequence Number Present bit is set to 1, then it indicates
- that the Sequence Number field is present. Otherwise, the
- Sequence Number field is not present in the GRE header.
-
- Strict Source Route (bit 4)
-
- The meaning of the Strict Source route bit is defined in other
- documents. It is recommended that this bit only be set to 1 if
- all of the the Routing Information consists of Strict Source
- Routes.
-
- Recursion Control (bits 5-7)
-
- Recursion control contains a three bit unsigned integer which
- contains the number of additional encapsulations which are
- permissible. This SHOULD default to zero.
-
- Version Number (bits 13-15)
-
- The Version Number field MUST contain the value 0. Other values
- are outside of the scope of this document.
-
-
-
-Hanks, Li, Farinacci & Traina [Page 3]
-
-RFC 1701 Generic Routing Encapsulation (GRE) October 1994
-
-
- Protocol Type (2 octets)
-
- The Protocol Type field contains the protocol type of the payload
- packet. In general, the value will be the Ethernet protocol type
- field for the packet. Currently defined protocol types are listed
- below. Additional values may be defined in other documents.
-
- Offset (2 octets)
-
- The offset field indicates the octet offset from the start of the
- Routing field to the first octet of the active Source Route Entry
- to be examined. This field is present if the Routing Present or
- the Checksum Present bit is set to 1, and contains valid
- information only if the Routing Present bit is set to 1.
-
- Checksum (2 octets)
-
- The Checksum field contains the IP (one's complement) checksum of
- the GRE header and the payload packet. This field is present if
- the Routing Present or the Checksum Present bit is set to 1, and
- contains valid information only if the Checksum Present bit is set
- to 1.
-
- Key (4 octets)
-
- The Key field contains a four octet number which was inserted by
- the encapsulator. It may be used by the receiver to authenticate
- the source of the packet. The techniques for determining
- authenticity are outside of the scope of this document. The Key
- field is only present if the Key Present field is set to 1.
-
- Sequence Number (4 octets)
-
- The Sequence Number field contains an unsigned 32 bit integer
- which is inserted by the encapsulator. It may be used by the
- receiver to establish the order in which packets have been
- transmitted from the encapsulator to the receiver. The exact
- algorithms for the generation of the Sequence Number and the
- semantics of their reception is outside of the scope of this
- document.
-
- Routing (variable)
-
- The Routing field is optional and is present only if the Routing
- Present bit is set to 1.
-
-
-
-
-
-
-Hanks, Li, Farinacci & Traina [Page 4]
-
-RFC 1701 Generic Routing Encapsulation (GRE) October 1994
-
-
- The Routing field is a list of Source Route Entries (SREs). Each
- SRE has the form:
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Address Family | SRE Offset | SRE Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Routing Information ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The routing field is terminated with a "NULL" SRE containing an
- address family of type 0x0000 and a length of 0.
-
- Address Family (2 octets)
-
- The Address Family field contains a two octet value which indicates
- the syntax and semantics of the Routing Information field. The
- values for this field and the corresponding syntax and semantics for
- Routing Information are defined in other documents.
-
- SRE Offset (1 octet)
-
- The SRE Offset field indicates the octet offset from the start of the
- Routing Information field to the first octet of the active entry in
- Source Route Entry to be examined.
-
- SRE Length (1 octet)
-
- The SRE Length field contains the number of octets in the SRE. If
- the SRE Length is 0, this indicates this is the last SRE in the
- Routing field.
-
- Routing Information (variable)
-
- The Routing Information field contains data which may be used in
- routing this packet. The exact semantics of this field is defined in
- other documents.
-
-Forwarding of GRE packets
-
- Normally, a system which is forwarding delivery layer packets will
- not differentiate GRE packets from other packets in any way.
- However, a GRE packet may be received by a system. In this case, the
- system should use some delivery-specific means to determine that this
- is a GRE packet. Once this is determined, the Key, Sequence Number
- and Checksum fields if they contain valid information as indicated by
- the corresponding flags may be checked. If the Routing Present bit
-
-
-
-Hanks, Li, Farinacci & Traina [Page 5]
-
-RFC 1701 Generic Routing Encapsulation (GRE) October 1994
-
-
- is set to 1, then the Address Family field should be checked to
- determine the semantics and use of the SRE Length, SRE Offset and
- Routing Information fields. The exact semantics for processing a SRE
- for each Address Family is defined in other documents.
-
- Once all SREs have been processed, then the source route is complete,
- the GRE header should be removed, the payload's TTL MUST be
- decremented (if one exists) and the payload packet should be
- forwarded as a normal packet. The exact forwarding method depends on
- the Protocol Type field.
-
-Current List of Protocol Types
-
- The following are currently assigned protocol types for GRE. Future
- protocol types must be taken from DIX ethernet encoding. For
- historical reasons, a number of other values have been used for some
- protocols. The following table of values MUST be used to identify
- the following protocols:
-
- Protocol Family PTYPE
- --------------- -----
- Reserved 0000
- SNA 0004
- OSI network layer 00FE
- PUP 0200
- XNS 0600
- IP 0800
- Chaos 0804
- RFC 826 ARP 0806
- Frame Relay ARP 0808
- VINES 0BAD
- VINES Echo 0BAE
- VINES Loopback 0BAF
- DECnet (Phase IV) 6003
- Transparent Ethernet Bridging 6558
- Raw Frame Relay 6559
- Apollo Domain 8019
- Ethertalk (Appletalk) 809B
- Novell IPX 8137
- RFC 1144 TCP/IP compression 876B
- IP Autonomous Systems 876C
- Secure Data 876D
- Reserved FFFF
-
- See the IANA list of Ether Types for the complete list of these
- values.
-
- URL = ftp://ftp.isi.edu/in-notes/iana/assignments/ethernet-numbers.
-
-
-
-Hanks, Li, Farinacci & Traina [Page 6]
-
-RFC 1701 Generic Routing Encapsulation (GRE) October 1994
-
-
-References
-
- RFC 1479
- Steenstrup, M. "Inter-Domain Policy Routing Protocol
- Specification: Version 1", RFC1479, BBN Systems and Technologies,
- July 1993.
-
- RFC 1226
- Kantor, B. "Internet Protocol Encapsulation of AX.25 Frames", RFC
- 1226, University of California, San Diego, May 1991.
-
- RFC 1234
- Provan, D. "Tunneling IPX Traffic through IP Networks", RFC 1234,
- Novell, Inc., June 1991.
-
- RFC 1241
- Woodburn, R., and D. Mills, "Scheme for an Internet Encapsulation
- Protocol: Version 1", RFC 1241, SAIC, University of Delaware, July
- 1991.
-
- RFC 1326
- Tsuchiya, P., "Mutual Encapsulation Considered Dangerous", RFC
- 1326, Bellcore, May 1992.
-
- SDRP
- Estrin, D., Li, T., and Y. Rekhter, "Source Demand Routing
- Protocol Specification (Version 1)", Work in Progress.
-
- RFC 1702
- Hanks, S., Li, T., Farinacci, D., and P. Traina, "Generic Routing
- Encapsulation over IPv4 networks", RFC 1702, NetSmiths, Ltd.,
- cisco Systems, October 1994.
-
-Security Considerations
-
- Security issues are not discussed in this memo.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hanks, Li, Farinacci & Traina [Page 7]
-
-RFC 1701 Generic Routing Encapsulation (GRE) October 1994
-
-
-Acknowledgements
-
- The authors would like to acknowledge Yakov Rekhter (IBM) and Deborah
- Estrin (USC) for their advice, encouragement and insightful comments.
-
-Authors' Addresses
-
- Stan Hanks
- NetSmiths, Ltd.
- 2025 Lincoln Highway
- Edison NJ, 08817
-
- EMail: stan@netsmiths.com
-
-
- Tony Li
- cisco Systems, Inc.
- 1525 O'Brien Drive
- Menlo Park, CA 94025
-
- EMail: tli@cisco.com
-
-
- Dino Farinacci
- cisco Systems, Inc.
- 1525 O'Brien Drive
- Menlo Park, CA 94025
-
- EMail: dino@cisco.com
-
-
- Paul Traina
- cisco Systems, Inc.
- 1525 O'Brien Drive
- Menlo Park, CA 94025
-
- EMail: pst@cisco.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hanks, Li, Farinacci & Traina [Page 8]
-
diff --git a/doc/rfc1702.txt b/doc/rfc1702.txt
deleted file mode 100644
index 50b57ae..0000000
--- a/doc/rfc1702.txt
+++ /dev/null
@@ -1,227 +0,0 @@
-
-
-
-
-
-
-Network Working Group S. Hanks
-Request for Comments: 1702 NetSmiths, Ltd.
-Category: Informational T. Li
- D. Farinacci
- P. Traina
- cisco Systems
- October 1994
-
-
- Generic Routing Encapsulation over IPv4 networks
-
-Status of this Memo
-
- This memo provides information for the Internet community. This memo
- does not specify an Internet standard of any kind. Distribution of
- this memo is unlimited.
-
-Introduction
-
- In an earlier memo [RFC 1701], we described GRE, a mechanism for
- encapsulating arbitrary packets within an arbitrary transport
- protocol. This is a companion memo which describes the use of GRE
- with IP. This memo addresses the case of using IP as the delivery
- protocol or the payload protocol and the special case of IP as both
- the delivery and payload. This memo also describes using IP
- addresses and autonomous system numbers as part of a GRE source
- route.
-
-IP as a delivery protocol
-
- GRE packets which are encapsulated within IP will use IP protocol
- type 47.
-
-IP as a payload protocol
-
- IP packets will be encapsulated with a Protocol Type field of 0x800.
-
- For the Address Family value of 0x800, the Routing Information field
- will consist of a list of IP addresses and indicates an IP source
- route. The first octet of the Routing Information field constitute a
- 8 bit integer offset from the start of the Source Route Entry (SRE),
- called the SRE Offset. The SRE Offset indicates the first octet of
- the next IP address. The SRE Length field consists of the total
- length of the IP Address List in octets.
-
-
-
-
-
-
-
-Hanks, Li, Farinacci & Traina [Page 1]
-
-RFC 1702 GRE over IPv4 networks October 1994
-
-
- This has the form:
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Address Family | SRE Offset | SRE Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | IP Address List ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- For the Address Family value of 0xfffe, the Routing Information field
- will consist of a list of Autonomous System numbers and indicates an
- AS source route. The third octet of the Routing Information field
- contains an 8 bit unsigned integer offset from the start of the
- Source Route Entry (SRE), called the SRE Offset. The SRE Offset
- indicates the first octet of the next AS number. THe SRE Length
- field consists of the total length of the AS Number list in octets.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Address Family | SRE Offset | SRE Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | AS Number List ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-IP as both delivery and payload protocol
-
- When IP is encapsulated in IP, the TTL, TOS, and IP security options
- MAY be copied from the payload packet into the same fields in the
- delivery packet. The payload packet's TTL MUST be decremented when
- the packet is decapsulated to insure that no packet lives forever.
-
-IP source routes
-
- When a system is processing a SRE with an Address Family indicating
- an IP source route, it MUST use the SRE Offset to determine the next
- destination IP address. If the next IP destination is this system,
- the SRE Offset field should be increased by four (the size of an IP
- address). If the SRE Offset is equal to the SRE Length in this SRE,
- then the Offset field in the GRE header should be adjusted to point
- to the next SRE (if any). This should be repeated until the next IP
- destination is not this system or until the entire SRE has been
- processed.
-
- If the source route is incomplete, then the Strict Source Route bit
- is checked. If the source route is a strict source route and the
- next IP destination is NOT an adjacent system, the packet MUST be
-
-
-
-Hanks, Li, Farinacci & Traina [Page 2]
-
-RFC 1702 GRE over IPv4 networks October 1994
-
-
- dropped. Otherwise, the system should use the IP address indicated
- by the Offset field to replace the destination address in the
- delivery header and forward the packet.
-
-Autonomous system source routes
-
- When a system is processing a SRE with an Address Family indicating
- an AS source route, it MUST use the SRE Offset field to determine the
- next autonomous system. If the next autonomous system is the local
- autonomous system, the SRE Offset field should be increased by two
- (the size of an autonomous system number). If the SRE Offset is
- equal to the SRE Length in this SRE, then the Offset field in the GRE
- header should be adjusted to point to the next SRE (if any). This
- should be repeated until the next autonomous system number is not
- equal to the local autonomous system number or until the entire SRE
- has been processed.
-
- If the source route is incomplete, then the Strict Source Route bit
- is checked. If the source route is a strict source route and the
- next autonomous system is NOT an adjacent autonomous system, the
- packet should be dropped. Otherwise, the system should use the
- autonomous system number indicated by the SRE Offset field to replace
- the destination address in the delivery header and forward the
- packet. The exact mechanism for determining the next delivery
- destination address given the AS number is outside of the scope of
- this document.
-
-Security Considerations
-
- Security issues are not discussed in this memo.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hanks, Li, Farinacci & Traina [Page 3]
-
-RFC 1702 GRE over IPv4 networks October 1994
-
-
-Authors' Addresses
-
- Stan Hanks
- NetSmiths, Ltd.
- 2025 Lincoln Highway
- Edison, NJ 08817
-
- EMail: stan@netsmiths.com
-
-
- Tony Li
- cisco Systems, Inc.
- 1525 O'Brien Drive
- Menlo Park, CA 94025
-
- EMail: tli@cisco.com
-
-
- Dino Farinacci
- cisco Systems, Inc.
- 1525 O'Brien Drive
- Menlo Park, CA 94025
-
- EMail: dino@cisco.com
-
-
- Paul Traina
- cisco Systems, Inc.
- 1525 O'Brien Drive
- Menlo Park, CA 94025
-
- EMail: pst@cisco.com
-
-References
-
- RFC 1701
- Hanks, S., Li, T, Farinacci, D., and P. Traina, "Generic Routing
- Encapsulation", RFC 1701, NetSmiths, Ltd., and cisco Systems,
- October 1994.
-
-
-
-
-
-
-
-
-
-
-
-
-Hanks, Li, Farinacci & Traina [Page 4]
-
diff --git a/doc/rfc1877.txt b/doc/rfc1877.txt
deleted file mode 100644
index 843c15c..0000000
--- a/doc/rfc1877.txt
+++ /dev/null
@@ -1,339 +0,0 @@
-
-
-
-
-
-
-Network Working Group S. Cobb
-Request for Comments: 1877 Microsoft
-Category: Informational December 1995
-
-
- PPP Internet Protocol Control Protocol Extensions for
- Name Server Addresses
-
-Status of this Memo
-
- This memo provides information for the Internet community. This memo
- does not specify an Internet standard of any kind. Distribution of
- this memo is unlimited.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method for
- transporting multi-protocol datagrams over point-to-point links. PPP
- defines an extensible Link Control Protocol and a family of Network
- Control Protocols (NCPs) for establishing and configuring different
- network-layer protocols.
-
- This document extends the NCP for establishing and configuring the
- Internet Protocol over PPP [2], defining the negotiation of primary
- and secondary Domain Name System (DNS) [3] and NetBIOS Name Server
- (NBNS) [4] addresses.
-
-Table of Contents
-
- 1. Additional IPCP Configuration options ................. 1
- 1.1 Primary DNS Server Address .................... 2
- 1.2 Primary NBNS Server Address ................... 3
- 1.3 Secondary DNS Server Address .................. 4
- 1.4 Secondary NBNS Server Address ................. 5
- REFRENCES .................................................... 6
- SECURITY CONSIDERATIONS ...................................... 6
- CHAIR'S ADDRESS .............................................. 6
- AUTHOR'S ADDRESS ............................................. 6
-
-1. Additional IPCP Configuration Options
-
- The four name server address configuration options, 129 to 132,
- provide a method of obtaining the addresses of Domain Name System
- (DNS) servers and (NetBIOS Name Server (NBNS) nodes on the remote
- network.
-
-
-
-
-
-
-Cobb Informational [Page 1]
-
-RFC 1877 PPP IPCP Extensions December 1995
-
-
- Primary and secondary addresses are negotiated independently. They
- serve identical purposes, except that when both are present an
- attempt SHOULD be made to resolve names using the primary address
- before using the secondary address.
-
- For implementational convenience, these options are designed to be
- identical in format and behavior to option 3 (IP-Address) which is
- already present in most IPCP implementations.
-
- Since the usefulness of name server address information is dependent
- on the topology of the remote network and local peer's application,
- it is suggested that these options not be included in the list of
- "IPCP Recommended Options".
-
-1.1. Primary DNS Server Address
-
- Description
-
- This Configuration Option defines a method for negotiating with
- the remote peer the address of the primary DNS server to be used
- on the local end of the link. If local peer requests an invalid
- server address (which it will typically do intentionally) the
- remote peer specifies the address by NAKing this option, and
- returning the IP address of a valid DNS server.
-
- By default, no primary DNS address is provided.
-
- A summary of the Primary DNS Address Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Primary-DNS-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Primary-DNS-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 129
-
- Length
-
- 6
-
-
-
-
-
-
-Cobb Informational [Page 2]
-
-RFC 1877 PPP IPCP Extensions December 1995
-
-
- Primary-DNS-Address
-
- The four octet Primary-DNS-Address is the address of the primary
- DNS server to be used by the local peer. If all four octets are
- set to zero, it indicates an explicit request that the peer
- provide the address information in a Config-Nak packet.
-
- Default
-
- No address is provided.
-
-1.2. Primary NBNS Server Address
-
- Description
-
- This Configuration Option defines a method for negotiating with
- the remote peer the address of the primary NBNS server to be used
- on the local end of the link. If local peer requests an invalid
- server address (which it will typically do intentionally) the
- remote peer specifies the address by NAKing this option, and
- returning the IP address of a valid NBNS server.
-
- By default, no primary NBNS address is provided.
-
- A summary of the Primary NBNS Address Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Primary-NBNS-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Primary-NBNS-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 130
-
- Length
-
- 6
-
- Primary-NBNS-Address
-
- The four octet Primary-NBNS-Address is the address of the primary
- NBNS server to be used by the local peer. If all four octets are
- set to zero, it indicates an explicit request that the peer
-
-
-
-Cobb Informational [Page 3]
-
-RFC 1877 PPP IPCP Extensions December 1995
-
-
- provide the address information in a Config-Nak packet.
-
- Default
-
- No address is provided.
-
-1.3. Secondary DNS Server Address
-
- Description
-
- This Configuration Option defines a method for negotiating with
- the remote peer the address of the secondary DNS server to be used
- on the local end of the link. If local peer requests an invalid
- server address (which it will typically do intentionally) the
- remote peer specifies the address by NAKing this option, and
- returning the IP address of a valid DNS server.
-
- By default, no secondary DNS address is provided.
-
- A summary of the Secondary DNS Address Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Secondary-DNS-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Secondary-DNS-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 131
-
- Length
-
- 6
-
- Secondary-DNS-Address
-
- The four octet Secondary-DNS-Address is the address of the primary
- NBNS server to be used by the local peer. If all four octets are
- set to zero, it indicates an explicit request that the peer
- provide the address information in a Config-Nak packet.
-
- Default
-
- No address is provided.
-
-
-
-Cobb Informational [Page 4]
-
-RFC 1877 PPP IPCP Extensions December 1995
-
-
-1.4. Secondary NBNS Server Address
-
- Description
-
- This Configuration Option defines a method for negotiating with
- the remote peer the address of the secondary NBNS server to be
- used on the local end of the link. If local peer requests an
- invalid server address (which it will typically do intentionally)
- the remote peer specifies the address by NAKing this option, and
- returning the IP address of a valid NBNS server.
-
- By default, no secondary NBNS address is provided.
-
- A summary of the Secondary NBNS Address Configuration Option format
- is shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Secondary-NBNS-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Secondary-NBNS-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 132
-
- Length
-
- 6
-
- Secondary-NBNS-Address
-
- The four octet Secondary-NBNS-Address is the address of the
- secondary NBNS server to be used by the local peer. If all
- four octets are set to zero, it indicates an explicit request
- that the peer provide the address information in a Config-Nak
- packet.
-
- Default
-
- No address is provided.
-
-
-
-
-
-
-
-
-Cobb Informational [Page 5]
-
-RFC 1877 PPP IPCP Extensions December 1995
-
-
-References
-
- [1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD 51,
- RFC 1661, Daydreamer, July 1994.
-
- [2] McGregor, G., "PPP Internet Control Protocol", RFC 1332, Merit,
- May 1992.
-
- [3] Auerbach, K., and A. Aggarwal, "Protocol Standard for a NetBIOS
- Service on a TCP/UDP Transport", STD 19, RFCs 1001 and 1002,
- March 1987.
-
- [4] Mockapetris, P., "Domain Names - Concepts and Facilities", STD
- 13, RFC 1034, USC/Information Sciences Institute, November 1987.
-
- [5] Mockapetris, P., "Domain Names - Implementation and
- Specification", STD 13, RFC 1035, USC/Information Sciences
- Institute, November 1987.
-
-Security Considerations
-
- Security issues are not discussed in this memo.
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Fred Baker
- Cisco Systems
- 519 Lado Drive
- Santa Barbara, California 93111
-
- EMail: fred@cisco.com
-
-Author's Address
-
- Questions about this memo can also be directed to:
-
- Steve Cobb
- Microsoft Corporation
- One Microsoft Way
- Redmond, WA 98052-6399
-
- Phone: (206) 882-8080
-
- EMail: stevec@microsoft.com
-
-
-
-
-
-Cobb Informational [Page 6]
-
diff --git a/doc/rfc1962.txt b/doc/rfc1962.txt
deleted file mode 100644
index fc9b47d..0000000
--- a/doc/rfc1962.txt
+++ /dev/null
@@ -1,507 +0,0 @@
-
-
-
-
-
-
-Network Working Group D. Rand
-Request for Comments: 1962 Novell
-Category: Standards Track June 1996
-
-
- The PPP Compression Control Protocol (CCP)
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method for
- transporting multi-protocol datagrams over point-to-point links. PPP
- also defines an extensible Link Control Protocol.
-
- This document defines a method for negotiating data compression over
- PPP links.
-
-Table of Contents
-
- 1. Introduction .......................................... 1
- 2. Compression Control Protocol (CCP) .................... 2
- 2.1 Sending Compressed Datagrams .................... 3
- 3. Additional Packets .................................... 4
- 3.1 Reset-Request and Reset-Ack ..................... 4
- 4. CCP Configuration Options ............................. 5
- 4.1 Proprietary Compression OUI ..................... 7
- 4.2 Other Compression Types ......................... 8
- SECURITY CONSIDERATIONS ...................................... 9
- REFERENCES ................................................... 9
- ACKNOWLEDGEMENTS ............................................. 9
- CHAIR'S ADDRESS .............................................. 9
- AUTHOR'S ADDRESS ............................................. 9
-
-1. Introduction
-
- In order to establish communications over a PPP link, each end of the
- link must first send LCP packets to configure and test the data link
- during Link Establishment phase. After the link has been
- established, optional facilities may be negotiated as needed.
-
-
-
-
-
-Rand Standards Track [Page 1]
-
-RFC 1962 PPP Compression June 1996
-
-
- One such facility is data compression. A wide variety of compression
- methods may be negotiated, although typically only one method is used
- in each direction of the link.
-
- A different compression algorithm may be negotiated in each
- direction, for speed, cost, memory or other considerations, or only
- one direction may be compressed.
-
-2. Compression Control Protocol (CCP)
-
- The Compression Control Protocol (CCP) is responsible for
- configuring, enabling, and disabling data compression algorithms on
- both ends of the point-to-point link. It is also used to signal a
- failure of the compression/decompression mechanism in a reliable
- manner.
-
- CCP uses the same packet exchange mechanism as the Link Control
- Protocol (LCP). CCP packets may not be exchanged until PPP has
- reached the Network-Layer Protocol phase. CCP packets received
- before this phase is reached should be silently discarded.
-
- The Compression Control Protocol is exactly the same as the Link
- Control Protocol [1] with the following exceptions:
-
- Frame Modifications
-
- The packet may utilize any modifications to the basic frame format
- which have been negotiated during the Link Establishment phase.
-
- Data Link Layer Protocol Field
-
- Exactly one CCP packet is encapsulated in the PPP Information
- field, where the PPP Protocol field indicates type hex 80FD
- (Compression Control Protocol).
-
- When individual link data compression is used in a multiple link
- connection to a single destination, the PPP Protocol field
- indicates type hex 80FB (Individual link Compression Control
- Protocol).
-
- Code field
-
- In addition to Codes 1 through 7 (Configure-Request, Configure-
- Ack, Configure-Nak, Configure-Reject, Terminate-Request,
- Terminate-Ack and Code-Reject), two additional Codes 14 and 15
- (Reset-Request and Reset-Ack) are defined for this protocol.
- Other Codes should be treated as unrecognized and should result in
- Code-Rejects.
-
-
-
-Rand Standards Track [Page 2]
-
-RFC 1962 PPP Compression June 1996
-
-
- Timeouts
-
- CCP packets may not be exchanged until PPP has reached the
- Network-Layer Protocol phase. An implementation should be
- prepared to wait for Authentication and Link Quality Determination
- to finish before timing out waiting for a Configure-Ack or other
- response. It is suggested that an implementation give up only
- after user intervention or a configurable amount of time.
-
- Configuration Option Types
-
- CCP has a distinct set of Configuration Options.
-
-2.1. Sending Compressed Datagrams
-
- Before any compressed packets may be communicated, PPP must reach the
- Network-Layer Protocol phase, and the Compression Control Protocol
- must reach the Opened state.
-
- One or more compressed packets are encapsulated in the PPP
- Information field, where the PPP Protocol field indicates type hex
- 00FD (Compressed datagram). Each of the compression algorithms may
- use a different mechanism to indicate the inclusion of more than one
- uncompressed packet in a single Data Link Layer frame.
-
- When using multiple PPP links to a single destination, there are two
- methods of employing data compression. The first method is to
- compress the data prior to sending it out through the multiple links.
- The second is to treat each link as a separate connection, that may
- or may not have compression enabled. In the second case, the PPP
- Protocol field MUST be type hex 00FB (Individual link compressed
- datagram).
-
- Only one primary algorithm in each direction is in use at a time, and
- that is negotiated prior to sending the first compressed frame. The
- PPP Protocol field of the compressed datagram indicates that the
- frame is compressed, but not the algorithm with which it was
- compressed.
-
- The maximum length of a compressed packet transmitted over a PPP link
- is the same as the maximum length of the Information field of a PPP
- encapsulated packet. Larger datagrams (presumably the result of the
- compression algorithm increasing the size of the message in some
- cases) may be sent uncompressed, using its standard form, or may be
- sent in multiple datagrams, if the compression algorithm supports it.
-
- Each of the compression algorithms must supply a way of determining
- if they are passing data reliably, or they must require the use of a
-
-
-
-Rand Standards Track [Page 3]
-
-RFC 1962 PPP Compression June 1996
-
-
- reliable transport such as LAPB [3]. Vendors are strongly encouraged
- to employ a method of validating the compressed data, or recognizing
- out-of-sync compressor/decompressor pairs.
-
-3. Additional Packets
-
- The Packet format and basic facilities are already defined for LCP
- [1].
-
- Up-to-date values of the CCP Code field are specified in the most
- recent "Assigned Numbers" RFC [2]. This specification concerns the
- following values:
-
- 14 Reset-Request
- 15 Reset-Ack
-
-3.1. Reset-Request and Reset-Ack
-
- Description
-
- CCP includes Reset-Request and Reset-Ack Codes in order to provide
- a mechanism for indicating a decompression failure in one
- direction of a compressed link without affecting traffic in the
- other direction. A decompression failure may be determined by
- periodically passing a hash value, performing a CRC check on the
- decompressed data, or other mechanism. It is strongly suggested
- that some mechanism be available in all compression algorithms to
- validate the decompressed data before passing the data on to the
- rest of the system.
-
- A CCP implementation wishing to indicate a decompression failure
- SHOULD transmit a CCP packet with the Code field set to 14
- (Reset-Request), and the Data field filled with any desired data.
- Once a Reset-Request has been sent, any Compressed packets
- received are discarded, and another Reset-Request is sent with the
- same Identifier, until a valid Reset-Ack is received.
-
- Upon reception of a Reset-Request, the transmitting compressor is
- reset to an initial state. This may include clearing a
- dictionary, resetting hash codes, or other mechanisms. A CCP
- packet MUST be transmitted with the Code field set to 15 (Reset-
- Ack), the Identifier field copied from the Reset-Request packet,
- and the Data field filled with any desired data.
-
- On receipt of a Reset-Ack, the receiving decompressor is reset to
- an initial state. This may include clearing a dictionary,
- resetting hash codes, or other mechanisms. Since there may be
- several Reset-Acks in the pipe, the decompressor MUST be reset for
-
-
-
-Rand Standards Track [Page 4]
-
-RFC 1962 PPP Compression June 1996
-
-
- each Reset-Ack which matches the currently expected identifier.
-
- A summary of the Reset-Request and Reset-Ack packet formats is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
- Code
-
- 14 for Reset-Request;
-
- 15 for Reset-Ack.
-
- Identifier
-
- On transmission, the Identifier field MUST be changed whenever the
- content of the Data field changes, and whenever a valid reply has
- been received for a previous request. For retransmissions, the
- Identifier MAY remain unchanged.
-
- On reception, the Identifier field of the Reset-Request is copied
- into the Identifier field of the Reset-Ack packet.
-
- Data
-
- The Data field is zero or more octets and contains uninterpreted
- data for use by the sender. The data may consist of any binary
- value and may be of any length from zero to the peer's established
- MRU minus four.
-
-4. CCP Configuration Options
-
- CCP Configuration Options allow negotiation of compression algorithms
- and their parameters. CCP uses the same Configuration Option format
- defined for LCP [1], with a separate set of Options.
-
- Configuration Options, in this protocol, indicate algorithms that the
- receiver is willing or able to use to decompress data sent by the
- sender. As a result, it is to be expected that systems will offer to
- accept several algorithms, and negotiate a single one that will be
- used.
-
-
-
-Rand Standards Track [Page 5]
-
-RFC 1962 PPP Compression June 1996
-
-
- There is the possibility of not being able to agree on a compression
- algorithm. In that case, no compression will be used, and the link
- will continue to operate without compression. If link reliability
- has been separately negotiated, then it will continue to be used,
- until the LCP is re-negotiated.
-
- We expect that many vendors will want to use proprietary compression
- algorithms, and have made a mechanism available to negotiate these
- without encumbering the Internet Assigned Number Authority with
- proprietary number requests.
-
- The LCP option negotiation techniques are used. If an option is
- unrecognized, a Configure-Reject MUST be sent. If all protocols the
- sender implements are Configure-Rejected by the receiver, then no
- compression is enabled in that direction of the link.
-
- If an option is recognized, but not acceptable due to values in the
- request (or optional parameters not in the request), a Configure-NAK
- MUST be sent with the option modified appropriately. The Configure-
- NAK MUST contain only those options that will be acceptable. A new
- Configure-Request SHOULD be sent with only the single preferred
- option, adjusted as specified in the Configure-Nak.
-
- Up-to-date values of the CCP Option Type field are specified in the
- most recent "Assigned Numbers" RFC [2]. Current values are assigned
- as follows:
-
- CCP Option Compression type
- 0 OUI
- 1 Predictor type 1
- 2 Predictor type 2
- 3 Puddle Jumper
- 4-15 unassigned
- 16 Hewlett-Packard PPC
- 17 Stac Electronics LZS
- 18 Microsoft PPC
- 19 Gandalf FZA
- 20 V.42bis compression
- 21 BSD LZW Compress
- 255 Reserved
-
- The unassigned values 4-15 are intended to be assigned to other
- freely available compression algorithms that have no license fees.
-
-
-
-
-
-
-
-
-Rand Standards Track [Page 6]
-
-RFC 1962 PPP Compression June 1996
-
-
-4.1. Proprietary Compression OUI
-
- Description
-
- This Configuration Option provides a way to negotiate the use of a
- proprietary compression protocol.
-
- Since the first matching compression will be used, it is
- recommended that any known OUI compression options be transmitted
- first, before the common options are used.
-
- Before accepting this option, the implementation must verify that
- the Organization Unique Identifier identifies a proprietary
- algorithm that the implementation can decompress, and that any
- vendor specific negotiation values are fully understood.
-
- A summary of the Proprietary Compression OUI Configuration Option
- format is shown below. The fields are transmitted from left to
- right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | OUI ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- OUI | Subtype | Values...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
- Type
-
- 0
-
- Length
-
- >= 6
-
- IEEE OUI
-
- The vendor's IEEE Organization Unique Identifier (OUI), which is
- the most significant three octets of an Ethernet Physical Address,
- assigned to the vendor by IEEE 802. This identifies the option as
- being proprietary to the indicated vendor. The bits within the
- octet are in canonical order, and the most significant octet is
- transmitted first.
-
-
-
-
-
-
-Rand Standards Track [Page 7]
-
-RFC 1962 PPP Compression June 1996
-
-
- Subtype
-
- This field is specific to each OUI, and indicates a compression
- type for that OUI. There is no standardization for this field.
- Each OUI implements its own values.
-
- Values
-
- This field is zero or more octets, and contains additional data as
- determined by the vendor's compression protocol.
-
-4.2. Other Compression Types
-
- Description
-
- These Configuration Options provide a way to negotiate the use of
- a publicly defined compression algorithm. Many compression
- algorithms are specified. No particular compression technique has
- arisen as an Internet Standard.
-
- These protocols will be made available to all interested parties,
- but may have certain licensing restrictions associated with them.
- For additional information, refer to the compression protocol
- documents that define each of the compression types.
-
- A summary of the Compression Type Configuration Option format is
- shown below. The fields are transmitted from left to right.
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Values...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
- Type
-
- 1 to 254
-
- Length
-
- >= 2
-
- Values
-
- This field is zero or more octets, and contains additional data as
- determined by the compression protocol.
-
-
-
-Rand Standards Track [Page 8]
-
-RFC 1962 PPP Compression June 1996
-
-
-Security Considerations
-
- Security issues are not discussed in this memo.
-
-References
-
- [1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD
- 51, RFC 1661, July 1994.
-
- [2] Reynolds, J., and Postel, J., "Assigned Numbers", STD 2, RFC
- 1700, USC/Information Sciences Institute, October 1994.
-
- [3] Rand, D., "PPP Reliable Transmission", RFC 1663, July 1994.
-
-Acknowledgments
-
- Bill Simpson helped with the document formatting.
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Karl Fox
- Ascend Communications
- 3518 Riverside Drive, Suite 101
- Columbus, Ohio 43221
-
- EMail: karl@ascend.com
-
-Author's Address
-
- Questions about this memo can also be directed to:
-
- Dave Rand
- Novell, Inc.
- 2180 Fortune Drive
- San Jose, CA 95131
-
- +1 408 321-1259
-
- EMail: dlr@daver.bungi.com
-
-
-
-
-
-
-
-
-
-
-Rand Standards Track [Page 9]
-
diff --git a/doc/rfc1979.txt b/doc/rfc1979.txt
deleted file mode 100644
index 7a95cd3..0000000
--- a/doc/rfc1979.txt
+++ /dev/null
@@ -1,563 +0,0 @@
-
-
-
-
-
-
-Network Working Group J. Woods
-Request for Comments: 1979 Proteon, Inc.
-Category: Informational August 1996
-
-
- PPP Deflate Protocol
-
-Status of This Memo
-
- This memo provides information for the Internet community. This memo
- does not specify an Internet standard of any kind. Distribution of
- this memo is unlimited.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method for
- transporting multi-protocol datagrams over point-to-point links.
-
- The PPP Compression Control Protocol [2] provides a method to
- negotiate and utilize compression protocols over PPP encapsulated
- links.
-
- This document describes the use of the PPP Deflate compression
- protocol for compressing PPP encapsulated packets.
-
-Table of Contents
-
- 1. Introduction ...................................... 2
- 1.1 Licensing ................................... 2
- 2. PPP Deflate Packets ............................... 3
- 2.1 Packet Format ............................... 6
- 3. Configuration Option Format ....................... 8
- SECURITY CONSIDERATIONS .................................. 9
- REFERENCES ............................................... 9
- ACKNOWLEDGEMENTS ......................................... 9
- CHAIR'S ADDRESS .......................................... 10
- AUTHOR'S ADDRESS ......................................... 10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Woods Informational [Page 1]
-
-RFC 1979 PPP Deflate August 1996
-
-
-1. Introduction
-
-The 'deflate' compression format[3], as used by the PKZIP and gzip
-compressors and as embodied in the freely and widely distributed
-zlib[4] library source code, has the following features:
-
- - an apparently unencumbered encoding and compression
- algorithm, with an open and publically-available
- specification.
-
- - low-overhead escape mechanism for incompressible data. The
- PPP Deflate specification offers options to reduce that
- overhead further.
-
- - heavily used for many years in networks, on modem and other
- point-to-point links to transfer files for personal computers
- and workstations.
-
- - easily achieves 2:1 compression on the Calgary corpus[5]
- using less than 64KBytes of memory on both sender and
- receive.
-
-1.1. Licensing
-
- The zlib source is widely and freely available, subject to the
- following copyright:
-
- (C) 1995 Jean-Loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any
- damages arising from the use of this software.
-
- Permission is granted to anyone to use this software for any
- purpose, including commercial applications, and to alter it and
- redistribute it freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you
- must not claim that you wrote the original software. If you
- use this software in a product, an acknowledgment in the
- product documentation would be appreciated but is not
- required.
-
- 2. Altered source versions must be plainly marked as such, and
- must not be misrepresented as being the original software.
-
-
-
-
-
-
-Woods Informational [Page 2]
-
-RFC 1979 PPP Deflate August 1996
-
-
- 3. This notice may not be removed or altered from any source
- distribution.
-
- Jean-Loup Gailly Mark Adler
- gzip@prep.ai.mit.edu madler@alumni.caltech.edu
-
- If you use the zlib library in a product, we would appreciate
- *not* receiving lengthy legal documents to sign. The sources are
- provided for free but without warranty of any kind. The library
- has been entirely written by Jean-Loup Gailly and Mark Adler; it
- does not include third-party code.
-
- The deflate format and compression algorithm are based on Lempel-Ziv
- LZ77 compression; extensive research has been done by the GNU Project
- and the Portable Network Graphics working group supporting its patent
- free status.
-
-2. PPP Deflate Packets
-
- Before any PPP Deflate packets may be communicated, PPP must reach
- the Network-Layer Protocol phase, and the CCP Control Protocol must
- reach the Opened state.
-
- Exactly one PPP Deflate datagram is encapsulated in the PPP
- Information field, where the PPP Protocol field contains 0xFD or
- 0xFB. 0xFD is used when the PPP multilink protocol is not used or
- "above" multilink. 0xFB is used "below" multilink, to compress
- independently on individual links of a multilink bundle.
-
- The maximum length of the PPP Deflate datagram transmitted over a PPP
- link is the same as the maximum length of the Information field of a
- PPP encapsulated packet.
-
- Only packets with PPP Protocol numbers in the range 0x0000 to 0x3FFF
- and neither 0xFD nor 0xFB are compressed. Other PPP packets are
- always sent uncompressed. Control packets are infrequent and should
- not be compressed for robustness.
-
- Padding
-
- PPP Deflate packets require the previous negotiation of the Self-
- Describing-Padding Configuration Option [6] if padding is added to
- packets. If no padding is added, than Self-Describing-Padding is
- not required.
-
-
-
-
-
-
-
-Woods Informational [Page 3]
-
-RFC 1979 PPP Deflate August 1996
-
-
- Reliability and Sequencing
-
- PPP Deflate requires the packets to be delivered in sequence. It
- relies on Reset-Request and Reset-Ack LCP packets or on
- renegotiation of the Compression Control Protocol [2] to indicate
- loss of synchronization between the transmitter and receiver. The
- LCP FCS detects corrupted packets and the normal mechanisms
- discard them. Missing or out of order packets are detected by the
- sequence number in each packet. The packet sequence number ought
- to be checked before decoding the packet.
-
- Instead of transmitting a Reset-Request packet when detecting a
- sequence error, the receiver MAY momentarily force CCP to drop out
- of the Opened state by transmitting a new CCP Configure-Request.
- This method is more expensive than using Reset-Requests.
-
- When the receiver first encounters an unexpected sequence number
- it SHOULD send a Reset-Request LCP packet as defined in the
- Compression Control Protocol. When the transmitter sends the
- Reset-Ack or when the receiver receives a Reset-ACK, they must
- reset the sequence number to zero, clear the compression
- dictionary, and resume sending and receiving compressed packets.
- The receiver MUST discard all compressed packets after detecting
- an error and until it receives a Reset-Ack. This strategy can be
- thought of as abandoning the transmission of one "file" and
- starting the transmission of a new "file."
-
- The transmitter must clear its compression history and respond
- with a Reset-Ack each time it receives a Reset-Request, because it
- cannot know if previous Reset-Acks reached the receiver. The
- receiver need not do anything to its history when it receives a
- Reset-Ack, because the transmitter will simply not refer to any
- prior history ('deflate' is a sliding-window compressor).
-
- When the link is busy, one decompression error is usually followed
- by several more before the Reset-Ack can be received. It is
- undesirable to transmit Reset-Requests more frequently than the
- round-trip-time of the link, because redundant Reset-Requests
- cause unnecessary compression dictionary clearing. The receiver
- MAY transmit an additional Reset-Request each time it receives a
- compressed or uncompressed packet until it finally receives a
- Reset-Ack, but the receiver ought not transmit another Reset-
- Request until the Reset-Ack for the previous one is late. The
- receiver MUST transmit enough Reset-Request packets to ensure that
- the transmitter receives at least one. For example, the receiver
- might choose to not transmit another Reset-Request until after one
- second (or, of course, a Reset-Ack has been received and
- decompression resumed).
-
-
-
-Woods Informational [Page 4]
-
-RFC 1979 PPP Deflate August 1996
-
-
- Data Expansion
-
- 'Deflate', as used in this standard, expands incompressible data
- by approximately 14-18 bytes (8 bytes worst-case at the 'deflate'
- level, two further bytes for the 'deflate' end-of-block and the
- zero-length synchronization block header, two bytes of sequence
- number, and two bytes to account for adding the PPP Protocol Field
- to the transmitted data unit).
-
- The BSD Compress draft proposal[7] describes an escape mechanism
- for incompressible data that trades off a layering violation for
- the irritating complications of variable and potentially
- unpredictable effective MRU lengths. That direct escape mechanism
- (and much of the text of its description) is used here as well.
-
- If an incompressible data packet does not fit within the MRU of
- the link, the packet MUST be sent in its original form without CCP
- encapsulation; PPP packets with significant data expansion that do
- not exceed the MRU of the link SHOULD be sent in their original
- form without CCP encapsulation. In both of these cases, the
- transmitter must increment the sequence number, as future
- encapsulated packets will depend on the correct reception of some
- number of unencapsulated packets.
-
- When a PPP packet is received with PPP Protocol numbers in the
- range 0x0000 to 0x3FFF, (except, of course, 0xFD and 0xFB) it is
- assumed that the packet would have caused expansion. The packet
- is locally added to the compression history. (Given the
- definition of the 'deflate' format, a convenient method of doing
- this is to locally "decompress" a stored-block header of the
- appropriate length, followed by the actual data block; or the data
- can simply be appended to the receiver's history, depending on
- implementation details.)
-
- Sending incompressible packets in their native encapsulation
- avoids maximum transmission unit complications. If uncompressed
- packets could be larger than their native form, then it would be
- necessary for the upper layers of an implementation to treat the
- PPP link as if it had a smaller MTU, to ensure that compressed
- incompressible packets are never larger than the negotiated PPP
- MTU.
-
- Using native encapsulation for incompressible packets complicates
- the implementation. The transmitter and the receiver must start
- putting information into the compression dictionary starting with
- the same packets, without relying upon seeing a compressed packet
- for synchronization. The first few packets after clearing the
- dictionary are usually incompressible, and so are likely to sent
-
-
-
-Woods Informational [Page 5]
-
-RFC 1979 PPP Deflate August 1996
-
-
- in their native encapsulation, just like packets before
- compression is turned on. If CCP or LCP packets are handled
- separately from Network-Layer packets (e.g. a "daemon" for control
- packets and "kernel code" for data packets), care must be taken to
- ensure that the transmitter synchronizes clearing the dictionary
- with the transmission of the configure-ACK or Reset-Ack that
- starts compression, and the receiver must similarly ensure that
- its dictionary is cleared before it processes the next packet.
-
-2.1. Packet Format
-
- A summary of the PPP Deflate packet format is shown below.
-
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | PPP Protocol | Sequence |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+-+-+-+-+
-
-
- PPP Protocol
-
- The PPP Protocol field is described in the Point-to-Point Protocol
- Encapsulation [1].
-
- When the PPP Deflate compression protocol is successfully
- negotiated by the PPP Compression Control Protocol [2], the value
- of the protocol field is 0xFD or 0xFB. This value MAY be
- compressed when Protocol-Field-Compression is negotiated.
-
- Sequence
-
- The sequence number is sent most significant octet first. It
- starts at 0 when the dictionary is cleared, and is incremented by
- 1 for each packet, including uncompressed packets. The sequence
- number after 65535 is zero. In other words, the sequence number
- "wraps" in the usual way.
-
- The sequence number ensures that lost or out of order packets do
- not cause the compression databases of the peers to become
- unsynchronized. When an unexpected sequence number is
- encountered, the dictionaries must be resynchronized with a CCP
- Reset-Request or Configure-Request. The packet sequence number
- can be checked before a compressed packet is decoded.
-
-
-
-Woods Informational [Page 6]
-
-RFC 1979 PPP Deflate August 1996
-
-
- Data
-
- The compressed PPP encapsulated packet, consisting of the Protocol
- and Data fields of the original, uncompressed packet follows.
-
- The Protocol field compression MUST be applied to the protocol
- field in the original packet before the sequence number is
- computed or the entire packet is compressed, regardless of whether
- the PPP protocol field compression has been negotiated. Thus, if
- the original protocol number was less than 0x100, it must be
- compressed to a single byte.
-
- The basic format of the compressed data is precisely described by
- the 'Deflate' Compressed Data Format Specification[3]. Each
- transmitted packet must begin at a 'deflate' block boundary, to
- ensure synchronization when incompressible data resets the
- transmitter's state; to ensure this, each transmitted packet must
- be terminated with a zero-length 'deflate' non-compressed block
- (BTYPE of 00). This means that the last four bytes of the
- compressed format must be 0x00 0x00 0xFF 0xFF. These bytes MUST
- be removed before transmission; the receiver can reinsert them if
- required by the implementation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Woods Informational [Page 7]
-
-RFC 1979 PPP Deflate August 1996
-
-
-3. Configuration Option Format
-
-
- Description
-
- The CCP PPP Deflate Configuration Option negotiates the use of PPP
- Deflate on the link. By default or ultimate disagreement, no
- compression is used.
-
- A summary of the PPP Deflate Configuration Option format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |Window | Method| MBZ |Chk|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 26 for PPP Deflate.
-
- Length
-
- 3
-
- Window
-
- Represents the maximum window size the decompressor is willing to
- allocate; expressed as the base-2 logarithm of the LZ77 window
- size, minus 8. 'Deflate' compliant decompressors must be willing
- to accept the maximum 32KB window size, represented by a value of
- 7. A 'deflate' compliant compressor is at liberty to use a
- reduced window size, so a PPP Deflate compressor MUST either honor
- the restriction requested or reject the option.
-
- Method
-
- Must be the binary number 1000. Represents the 'zlib' Compression
- Method identifier of '8' for 'deflate' compression with up to 32K
- window size.
-
- MBZ
-
- Must be all 0 bits.
-
-
-
-
-
-Woods Informational [Page 8]
-
-RFC 1979 PPP Deflate August 1996
-
-
- Chk
-
- Must be 00 to specify sequence number check method.
-
-Security Considerations
-
- Security issues are not discussed in this memo.
-
-References
-
- [1] Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51,
- RFC 1661, July 1994.
-
- [2] Rand, D., "The PPP Compression Control Protocol (CCP)",
- RFC 1962, June 1996.
-
- [3] Deutsch, L.P., "'Deflate' Compressed Data Format
- Specification", draft available in
- ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc.
-
- [4] Gailly, J.-L., "Zlib 0.95 beta".
-
- [5] Bell, T.C., Cleary, G. G. and Witten, I.H., "Text Compression",
- Prentice_Hall, Englewood Cliffs NJ, 1990. The compression
- corpus itself can be found in ftp.uu.net:/pub/archiving/zip/.
-
- [6] Simpson, W., "PPP LCP Extensions", RFC 1570, January 1994.
-
- [7] Schryver, V., "PPP BSD Compression Protocol", RFC 1977,
- August 1996.
-
-Acknowledgments
-
- William Simpson provided the very valuable idea of not using any
- additional header bytes for incompressible packets.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Woods Informational [Page 9]
-
-RFC 1979 PPP Deflate August 1996
-
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Karl Fox
- Ascend Communications
- 3518 Riverside Drive, Suite 101
- Columbus, Ohio 43221
-
- EMail: karl@ascend.com
-
-Author's Address
-
- Questions about this memo can also be directed to:
-
- John Woods
- Proteon, Inc.
- 9 Technology Drive
- Westborough MA 01581-1799
-
- (508) 898-2800 ext. 2651
- EMail: jfw@funhouse.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Woods Informational [Page 10]
-
diff --git a/doc/rfc1990.txt b/doc/rfc1990.txt
deleted file mode 100644
index a4f7ffe..0000000
--- a/doc/rfc1990.txt
+++ /dev/null
@@ -1,1347 +0,0 @@
-
-
-
-
-
-
-Network Working Group K. Sklower
-Request for Comments: 1990 University of California, Berkeley
-Obsoletes: 1717 B. Lloyd
-Category: Standards Track G. McGregor
- Lloyd Internetworking
- D. Carr
- Newbridge Networks Corporation
- T. Coradetti
- Sidewalk Software
- August 1996
-
-
- The PPP Multilink Protocol (MP)
-
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Abstract
-
- This document proposes a method for splitting, recombining and
- sequencing datagrams across multiple logical data links. This work
- was originally motivated by the desire to exploit multiple bearer
- channels in ISDN, but is equally applicable to any situation in which
- multiple PPP links connect two systems, including async links. This
- is accomplished by means of new PPP [2] options and protocols.
-
- The differences between the current PPP Multilink specification (RFC
- 1717) and this memo are explained in Section 11. Any system
- implementing the additional restrictions required by this memo will
- be backwards compatible with conforming RFC 1717 implementations.
-
-Acknowledgements
-
- The authors specifically wish to thank Fred Baker of ACC, Craig Fox
- of Network Systems, Gerry Meyer of Spider Systems, Dan Brennan of
- Penril Datability Networks, Vernon Schryver of SGI (for the
- comprehensive discussion of padding), and the members of the IP over
- Large Public Data Networks and PPP Extensions working groups, for
- much useful discussion on the subject.
-
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 1]
-
-RFC 1990 PPP Multilink August 1996
-
-
-Table of Contents
-
- 1. Introduction ................................................ 2
- 1.1. Motivation ................................................ 2
- 1.2. Functional Description .................................... 3
- 1.3. Conventions ............................................... 4
- 2. General Overview ............................................ 4
- 3. Packet Formats .............................................. 7
- 3.1. Padding Considerations .................................... 10
- 4. Trading Buffer Space Against Fragment Loss .................. 10
- 4.1. Detecting Fragment Loss ................................... 11
- 4.2. Buffer Space Requirements ................................. 12
- 5. PPP Link Control Protocol Extensions ........................ 13
- 5.1. Configuration Option Types ................................ 13
- 5.1.1. Multilink MRRU LCP option ............................... 14
- 5.1.2. Short Sequence Number Header Format Option .............. 15
- 5.1.3. Endpoint Discriminator Option ........................... 15
- 6. Initiating use of Multilink Headers ......................... 19
- 7. Closing Member links ........................................ 20
- 8. Interaction with Other Protocols ............................ 20
- 9. Security Considerations ..................................... 21
- 10. References ................................................. 21
- 11. Differences from RFC 1717 .................................. 22
- 11.1. Negotiating Multilink, per se ............................ 22
- 11.2. Initial Sequence Number defined .......................... 22
- 11.3. Default Value of the MRRU ................................ 22
- 11.4. Config-Nak of EID prohibited ............................. 22
- 11.5. Uniformity of Sequence Space ............................. 22
- 11.6. Commencing and Abating use of Multilink Headers .......... 23
- 11.7. Manual Configuration and Bundle Assignment ............... 23
- 12. Authors' Addresses ......................................... 24
-
-1. Introduction
-
-1.1. Motivation
-
- Basic Rate and Primary Rate ISDN both offer the possibility of
- opening multiple simultaneous channels between systems, giving users
- additional bandwidth on demand (for additional cost). Previous
- proposals for the transmission of internet protocols over ISDN have
- stated as a goal the ability to make use of this capability, (e.g.,
- Leifer et al., [1]).
-
- There are proposals being advanced for providing synchronization
- between multiple streams at the bit level (the BONDING proposals);
- such features are not as yet widely deployed, and may require
- additional hardware for end system. Thus, it may be useful to have a
- purely software solution, or at least an interim measure.
-
-
-
-Sklower, et. al. Standards Track [Page 2]
-
-RFC 1990 PPP Multilink August 1996
-
-
- There are other instances where bandwidth on demand can be exploited,
- such as using a dialup async line at 28,800 baud to back up a leased
- synchronous line, or opening additional X.25 SVCs where the window
- size is limited to two by international agreement.
-
- The simplest possible algorithms of alternating packets between
- channels on a space available basis (which might be called the Bank
- Teller's algorithm) may have undesirable side effects due to
- reordering of packets.
-
- By means of a four-byte sequencing header, and simple synchronization
- rules, one can split packets among parallel virtual circuits between
- systems in such a way that packets do not become reordered, or at
- least the likelihood of this is greatly reduced.
-
-1.2. Functional Description
-
- The method discussed here is similar to the multilink protocol
- described in ISO 7776 [4], but offers the additional ability to split
- and recombine packets, thereby reducing latency, and potentially
- increase the effective maximum receive unit (MRU). Furthermore,
- there is no requirement here for acknowledged-mode operation on the
- link layer, although that is optionally permitted.
-
- Multilink is based on an LCP option negotiation that permits a system
- to indicate to its peer that it is capable of combining multiple
- physical links into a "bundle". Only under exceptional conditions
- would a given pair of systems require the operation of more than one
- bundle connecting them.
-
- Multilink is negotiated during the initial LCP option negotiation. A
- system indicates to its peer that it is willing to do multilink by
- sending the multilink option as part of the initial LCP option
- negotiation. This negotiation indicates three things:
-
- 1. The system offering the option is capable of combining multiple
- physical links into one logical link;
-
- 2. The system is capable of receiving upper layer protocol data
- units (PDU) fragmented using the multilink header (described
- later) and reassembling the fragments back into the original PDU
- for processing;
-
- 3. The system is capable of receiving PDUs of size N octets where N
- is specified as part of the option even if N is larger than the
- maximum receive unit (MRU) for a single physical link.
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 3]
-
-RFC 1990 PPP Multilink August 1996
-
-
- Once multilink has been successfully negotiated, the sending system
- is free to send PDUs encapsulated and/or fragmented with the
- multilink header.
-
-1.3. Conventions
-
- The following language conventions are used in the items of
- specification in this document:
-
- o MUST, SHALL or MANDATORY -- the item is an absolute requirement
- of the specification.
-
- o SHOULD or RECOMMENDED -- the item should generally be followed
- for all but exceptional circumstances.
-
- o MAY or OPTIONAL -- the item is truly optional and may be
- followed or ignored according to the needs of the implementor.
-
-2. General Overview
-
- In order to establish communications over a point-to-point link, each
- end of the PPP link must first send LCP packets to configure the data
- link during Link Establishment phase. After the link has been
- established, PPP provides for an Authentication phase in which the
- authentication protocols can be used to determine identifiers
- associated with each system connected by the link.
-
- The goal of multilink operation is to coordinate multiple independent
- links between a fixed pair of systems, providing a virtual link with
- greater bandwidth than any of the constituent members. The aggregate
- link, or bundle, is named by the pair of identifiers for two systems
- connected by the multiple links. A system identifier may include
- information provided by PPP Authentication [3] and information
- provided by LCP negotiation. The bundled links can be different
- physical links, as in multiple async lines, but may also be instances
- of multiplexed links, such as ISDN, X.25 or Frame Relay. The links
- may also be of different kinds, such as pairing dialup async links
- with leased synchronous links.
-
- We suggest that multilink operation can be modeled as a virtual PPP
- link-layer entity wherein packets received over different physical
- link-layer entities are identified as belonging to a separate PPP
- network protocol (the Multilink Protocol, or MP) and recombined and
- sequenced according to information present in a multilink
- fragmentation header. All packets received over links identified as
- belonging to the multilink arrangement are presented to the same
- network-layer protocol processing machine, whether they have
- multilink headers or not.
-
-
-
-Sklower, et. al. Standards Track [Page 4]
-
-RFC 1990 PPP Multilink August 1996
-
-
- The packets to be transmitted using the multilink procedure are
- encapsulated according to the rules for PPP where the following
- options would have been manually configured:
-
- o No async control character Map
- o No Magic Number
- o No Link Quality Monitoring
- o Address and Control Field Compression
- o Protocol Field Compression
- o No Compound Frames
- o No Self-Describing-Padding
-
- According to the rules specified in RFC1661, this means that an
- implementation MUST accept reassembled packets with and without
- leading zeroes present in the Protocol Field of the reassembled
- packet. Although it is explicitly forbidden below to include the
- Address and Control fields (usually, the two bytes FF 03) in the
- material to be fragmented, it is a good defensive programming
- practice to accept the packet anyway, ignoring the two bytes if
- present, as that is what RFC1661 specifies.
-
- As a courtesy to implementations that perform better when certain
- alignment obtains, it is suggested that a determination be made when
- a bundle is created on whether to transmit leading zeroes by
- examining whether PFC has been negotiated on the first link admitted
- into a bundle. This determination should be kept in force so long as
- a bundle persists.
-
- Of course, individual links are permitted to have different settings
- for these options. As described below, member links SHOULD negotiate
- Self-Describing-Padding, even though pre-fragmented packets MUST NOT
- be padded. Since the Protocol Field Compression mode on the member
- link allows a sending system to include a leading byte of zero or not
- at its discretion, this is an alternative mechanism for generating
- even-length packets.
-
- LCP negotiations are not permitted on the bundle itself. An
- implementation MUST NOT transmit LCP Configure-Request, -Reject,
- -Ack, -Nak, Terminate-Request or -Ack packets via the multilink
- procedure, and an implementation receiving them MUST silently discard
- them. (By "silently discard" we mean to not generate any PPP packets
- in response; an implementation is free to generate a log entry
- registering the reception of the unexpected packet). By contrast,
- other LCP packets having control functions not associated with
- changing the defaults for the bundle itself are permitted. An
- implementation MAY transmit LCP Code-Reject, Protocol-Reject, Echo-
- Request, Echo-Reply and Discard-Request Packets.
-
-
-
-
-Sklower, et. al. Standards Track [Page 5]
-
-RFC 1990 PPP Multilink August 1996
-
-
- The effective MRU for the logical-link entity is negotiated via an
- LCP option. It is irrelevant whether Network Control Protocol
- packets are encapsulated in multilink headers or not, or even over
- which link they are sent, once that link identifies itself as
- belonging to a multilink arrangement.
-
- Note that network protocols that are not sent using multilink headers
- cannot be sequenced. (And consequently will be delivered in any
- convenient way).
-
- For example, consider the case in Figure 1. Link 1 has negotiated
- network layers NL 1, NL 2, and MP between two systems. The two
- systems then negotiate MP over Link 2.
-
- Frames received on link 1 are demultiplexed at the data link layer
- according the PPP network protocol identifier and can be sent to NL
- 1, NL 2, or MP. Link 2 will accept frames with all network protocol
- identifiers that Link 1 does.
-
- Frames received by MP are further demultiplexed at the network layer
- according to the PPP network protocol identifier and sent to NL 1 or
- NL 2. Any frames received by MP for any other network layer
- protocols are rejected using the normal protocol reject mechanism.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 6]
-
-RFC 1990 PPP Multilink August 1996
-
-
- Figure 1. Multilink Overview.
-
- Network Layer
- -------------
- ______ ______
- / \ / \
- | NL 1 | | NL 2 |
- \______/ \______/
- | | | | | |
- | | +-------------o-o-o-+
- | +------+ +-----+ | | |
- | | | | | |
- | +------o--o-------+ + |
- | | |__|_ | |
- | | / \ | |
- | | | MLCP | <--- Link Layer
- | | \______/ Demultiplexing
- | | | | |
- | | | | |
- | | | <--- Virtual Link
- | | | | |
- | | | | |
- | | | | |
- | | + | |
- ___|_| | ___|_|
- / \ | / \
- | LCP |------+-----| LCP | <--- Link Layer
- \______/ \______/ Demultiplexing
- | |
- | |
- Link 1 Link 2
-
-3. Packet Formats
-
- In this section we describe the layout of individual fragments, which
- are the "packets" in the Multilink Protocol. Network Protocol
- packets are first encapsulated (but not framed) according to normal
- PPP procedures, and large packets are broken up into multiple
- segments sized appropriately for the multiple physical links.
- Although it would otherwise be permitted by the PPP spec,
- implementations MUST NOT include the Address and Control Field in the
- logical entity to be fragmented. A new PPP header consisting of the
- Multilink Protocol Identifier, and the Multilink header is inserted
- before each section. (Thus the first fragment of a multilink packet
- in PPP will have two headers, one for the fragment, followed by the
- header for the packet itself).
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 7]
-
-RFC 1990 PPP Multilink August 1996
-
-
- Systems implementing the multilink procedure are not required to
- fragment small packets. There is also no requirement that the
- segments be of equal sizes, or that packets must be broken up at all.
- A possible strategy for contending with member links of differing
- transmission rates would be to divide the packets into segments
- proportion to the transmission rates. Another strategy might be to
- divide them into many equal fragments and distribute multiple
- fragments per link, the numbers being proportional to the relative
- speeds of the links.
-
- PPP multilink fragments are encapsulated using the protocol
- identifier 0x00-0x3d. Following the protocol identifier is a four
- byte header containing a sequence number, and two one bit fields
- indicating that the fragment begins a packet or terminates a packet.
- After negotiation of an additional PPP LCP option, the four byte
- header may be optionally replaced by a two byte header with only a 12
- bit sequence space. Address & Control and Protocol ID compression
- are assumed to be in effect. Individual fragments will, therefore,
- have the following format:
-
- Figure 2: Long Sequence Number Fragment Format.
-
-
- +---------------+---------------+
- PPP Header: | Address 0xff | Control 0x03 |
- +---------------+---------------+
- | PID(H) 0x00 | PID(L) 0x3d |
- +-+-+-+-+-+-+-+-+---------------+
- MP Header: |B|E|0|0|0|0|0|0|sequence number|
- +-+-+-+-+-+-+-+-+---------------+
- | sequence number (L) |
- +---------------+---------------+
- | fragment data |
- | . |
- | . |
- | . |
- +---------------+---------------+
- PPP FCS: | FCS |
- +---------------+---------------+
-
-
-
-
-
-
-
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 8]
-
-RFC 1990 PPP Multilink August 1996
-
-
- Figure 3: Short Sequence Number Fragment Format.
-
-
- +---------------+---------------+
- PPP Header: | Address 0xff | Control 0x03 |
- +---------------+---------------+
- | PID(H) 0x00 | PID(L) 0x3d |
- +-+-+-+-+-------+---------------+
- MP Header: |B|E|0|0| sequence number |
- +-+-+-+-+-------+---------------+
- | fragment data |
- | . |
- | . |
- | . |
- +---------------+---------------+
- PPP FCS: | FCS |
- +---------------+---------------+
-
- The (B)eginning fragment bit is a one bit field set to 1 on the first
- fragment derived from a PPP packet and set to 0 for all other
- fragments from the same PPP packet.
-
- The (E)nding fragment bit is a one bit field set to 1 on the last
- fragment and set to 0 for all other fragments. A fragment may have
- both the (B)eginning and (E)nding fragment bits set to 1.
-
- The sequence field is a 24 bit or 12 bit number that is incremented
- for every fragment transmitted. By default, the sequence field is 24
- bits long, but can be negotiated to be only 12 bits with an LCP
- configuration option described below.
-
- Between the (E)nding fragment bit and the sequence number is a
- reserved field, whose use is not currently defined, which MUST be set
- to zero. It is 2 bits long when the use of short sequence numbers
- has been negotiated, 6 bits otherwise.
-
- In this multilink protocol, a single reassembly structure is
- associated with the bundle. The multilink headers are interpreted in
- the context of this structure.
-
- The FCS field shown in the diagram is inherited from the normal
- framing mechanism from the member link on which the packet is
- transmitted. There is no separate FCS applied to the reconstituted
- packet as a whole if transmitted in more than one fragment.
-
-
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 9]
-
-RFC 1990 PPP Multilink August 1996
-
-
-3.1. Padding Considerations
-
- Systems that support the multilink protocol SHOULD implement Self-
- Describing-Padding. A system that implements self-describing-padding
- by definition will either include the padding option in its initial
- LCP Configure-Requests, or (to avoid the delay of a Configure-Reject)
- include the padding option after receiving a NAK containing the
- option.
-
- A system that must pad its own transmissions but does not use Self-
- Describing-Padding when not using multilink, MAY continue to not use
- Self-Describing-Padding if it ensures by careful choice of fragment
- lengths that only (E)nding fragments of packets are padded. A system
- MUST NOT add padding to any packet that cannot be recognized as
- padded by the peer. Non-terminal fragments MUST NOT be padded with
- trailing material by any other method than Self-Describing-Padding.
-
- A system MUST ensure that Self-Describing-Padding as described in RFC
- 1570 [11] is negotiated on the individual link before transmitting
- any multilink data packets if it might pad non-terminal fragments or
- if it would use network or compression protocols that are vulnerable
- to padding, as described in RFC 1570. If necessary, the system that
- adds padding MUST use LCP Configure-NAK's to elicit a Configure-
- Request for Self-Describing-Padding from the peer.
-
- Note that LCP Configure-Requests can be sent at any time on any link,
- and that the peer will always respond with a Configure-Request of its
- own. A system that pads its transmissions but uses no protocols
- other than multilink that are vulnerable to padding MAY delay
- ensuring that the peer has Configure-Requested Self-Describing-
- Padding until it seems desireable to negotiate the use of Multilink
- itself. This permits the interoperability of a system that pads with
- older peers that support neither Multilink nor Self-Describing-
- Padding.
-
-4. Trading Buffer Space Against Fragment Loss
-
- In a multilink procedure one channel may be delayed with respect to
- the other channels in the bundle. This can lead to fragments being
- received out of order, thus increasing the difficulty in detecting
- the loss of a fragment. The task of estimating the amount of space
- required for buffering on the receiver becomes more complex because
- of this. In this section we discuss a technique for declaring that a
- fragment is lost, with the intent of minimizing the buffer space
- required, yet minimizing the number of avoidable packet losses.
-
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 10]
-
-RFC 1990 PPP Multilink August 1996
-
-
-4.1. Detecting Fragment Loss
-
- On each member link in a bundle, the sender MUST transmit fragments
- with strictly increasing sequence numbers (modulo the size of the
- sequence space). This requirement supports a strategy for the
- receiver to detect lost fragments based on comparing sequence
- numbers. The sequence number is not reset upon each new PPP packet,
- and a sequence number is consumed even for those fragments which
- contain an entire PPP packet, i.e., one in which both the (B)eginning
- and (E)nding bits are set.
-
- An implementation MUST set the sequence number of the first fragment
- transmited on a newly-constructed bundle to zero. (Joining a
- secondary link to an exisiting bundle is invisible to the protocol,
- and an implementation MUST NOT reset the sequence number space in
- this situation).
-
- The receiver keeps track of the incoming sequence numbers on each
- link in a bundle and maintains the current minimum of the most
- recently received sequence number over all the member links in the
- bundle (call this M). The receiver detects the end of a packet when
- it receives a fragment bearing the (E)nding bit. Reassembly of the
- packet is complete if all sequence numbers up to that fragment have
- been received.
-
- A lost fragment is detected when M advances past the sequence number
- of a fragment bearing an (E)nding bit of a packet which has not been
- completely reassembled (i.e., not all the sequence numbers between
- the fragment bearing the (B)eginning bit and the fragment bearing the
- (E)nding bit have been received). This is because of the increasing
- sequence number rule over the bundle. Any sequence number so
- detected is assumed to correspond to a fragment which has been lost.
-
- An implementation MUST assume that if a fragment bears a (B)eginning
- bit, that the previously numbered fragment bore an (E)nding bit.
- Thus if a packet is lost bearing the (E)nding bit, and the packet
- whose fragment number is M contains a (B)eginning bit, the
- implementation MUST discard fragments for all unassembled packets
- through M-1, but SHOULD NOT discard the fragment bearing the new
- (B)eginning bit on this basis alone.
-
- The detection of a lost fragment, whose sequence number was deduced
- to be U, causes the receiver to discard all fragments up to the
- lowest numbered fragment with an ending bit (possibly deduced)
- greater than or equal to U. However, the quantity M may jump into
- the middle of a chain of packets which can be successful completed.
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 11]
-
-RFC 1990 PPP Multilink August 1996
-
-
- Fragments may be lost due to corruption of individual packets or
- catastrophic loss of the link (which may occur only in one
- direction). This version of the multilink protocol mandates no
- specific procedures for the detection of failed links. The PPP link
- quality management facility, or the periodic issuance of LCP echo-
- requests could be used to achieve this.
-
- Senders SHOULD avoid keeping any member links idle to maximize early
- detection of lost fragments by the receiver, since the value of M is
- not incremented on idle links. Senders SHOULD rotate traffic among
- the member links if there isn't sufficient traffic to overflow the
- capacity of one link to avoid idle links.
-
- Loss of the final fragment of a transmission can cause the receiver
- to stall until new packets arrive. The likelihood of this may be
- decreased by sending a null fragment on each member link in a bundle
- that would otherwise become idle immediately after having transmitted
- a fragment bearing the (E)nding bit, where a null fragment is one
- consisting only of a multilink header bearing both the (B)egin and
- (E)nding bits (i.e., having no payload). Implementations concerned
- about either wasting bandwidth or per packet costs are not required
- to send null fragments and may elect to defer sending them until a
- timer expires, with the marginally increased possibility of lengthier
- stalls in the receiver. The receiver SHOULD implement some type of
- link idle timer to guard against indefinite stalls.
-
- The increasing sequence per link rule prohibits the reallocation of
- fragments queued up behind a failing link to a working one, a
- practice which is not unusual for implementations of ISO multilink
- over LAPB [4].
-
-4.2. Buffer Space Requirements
-
- There is no amount of buffering that will guarantee correct detection
- of fragment loss, since an adversarial peer may withhold a fragment
- on one channel and send arbitrary amounts on the others. For the
- usual case where all channels are transmitting, you can show that
- there is a minimum amount below which you could not correctly detect
- packet loss. The amount depends on the relative delay between the
- channels, (D[channel-i,channel-j]), the data rate of each channel,
- R[c], the maximum fragment size permitted on each channel, F[c], and
- the total amount of buffering the transmitter has allocated amongst
- the channels.
-
- When using PPP, the delay between channels could be estimated by
- using LCP echo request and echo reply packets. (In the case of links
- of different transmission rates, the round trip times should be
- adjusted to take this into account.) The slippage for each channel
-
-
-
-Sklower, et. al. Standards Track [Page 12]
-
-RFC 1990 PPP Multilink August 1996
-
-
- is defined as the bandwidth times the delay for that channel relative
- to the channel with the longest delay, S[c] = R[c] * D[c,c-worst].
- (S[c-worst] will be zero, of course!)
-
- A situation which would exacerbate sequence number skew would be one
- in which there is extremely bursty traffic (almost allowing all
- channels to drain), and then where the transmitter would first queue
- up as many consecutively numbered packets on one link as it could,
- then queue up the next batch on a second link, and so on. Since
- transmitters must be able to buffer at least a maximum- sized
- fragment for each link (and will usually buffer up at least two) A
- receiver that allocates any less than S[1] + S[2] + ... + S[N] + F[1]
- + ... + F[N], will be at risk for incorrectly assuming packet loss,
- and therefore, SHOULD allocate at least twice that.
-
-5. PPP Link Control Protocol Extensions
-
- If reliable multilink operation is desired, PPP Reliable Transmission
- [6] (essentially the use of ISO LAPB) MUST be negotiated prior to the
- use of the Multilink Protocol on each member link.
-
- Whether or not reliable delivery is employed over member links, an
- implementation MUST present a signal to the NCP's running over the
- multilink arrangement that a loss has occurred.
-
- Compression may be used separately on each member link, or run over
- the bundle (as a logical group link). The use of multiple
- compression streams under the bundle (i.e., on each link separately)
- is indicated by running the Compression Control Protocol [5] but with
- an alternative PPP protocol ID.
-
-5.1. Configuration Option Types
-
- The Multilink Protocol introduces the use of additional LCP
- Configuration Options:
-
- o Multilink Maximum Received Reconstructed Unit
- o Multilink Short Sequence Number Header Format
- o Endpoint Discriminator
-
-
-
-
-
-
-
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 13]
-
-RFC 1990 PPP Multilink August 1996
-
-
-5.1.1. Multilink MRRU LCP option
-
- Figure 4: Multilink MRRU LCP option
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type = 17 | Length = 4 | Max-Receive-Reconstructed-Unit|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The presence of this LCP option indicates that the system sending it
- implements the PPP Multilink Protocol. If not rejected, the system
- will construe all packets received on this link as being able to be
- processed by a common protocol machine with any other packets
- received from the same peer on any other link on which this option
- has been accepted.
-
- The Max-Receive-Reconstructed unit field is two octets, and specifies
- the maximum number of octets in the Information fields of reassembled
- packets. A system MUST be able to receive the full 1500 octet
- Information field of any reassembled PPP packet although it MAY
- attempt to negotiate a smaller, or larger value. The number 1500
- here comes from the specification for the MRU LCP option in PPP; if
- this requirement is changed in a future version of RFC 1661, the same
- rules will apply here.
-
- A system MUST include the LCP MRRU option in every LCP negotiation
- intended to instantiate a bundle or to join an existing bundle. If
- the LCP MRRU option is offered on a link which is intended to join an
- existing bundle, a system MUST offer the same Max-Receive-
- Reconstruct-Unit value previously negotiated for the bundle.
-
- A system MUST NOT send any multilink packets on any link unless its
- peer has offered the MMRU LCP option and the system has configure-
- Ack'ed it during the most recent LCP negotiation on that link. A
- system MAY include the MMRU LCP option in a configure-NAK, if its
- peer has not offered it (until, according to PPP rules, the peer
- configure-Reject's it).
-
- Note: the MRRU value conveyed im this option corresponds to the MRU
- of the bundle when conceptualized as a PPP entity; but the rules for
- the Multilink MRRU option are different from the LCP MRU option, as
- some value MUST be offered in every LCP negotiation, and that
- confirmation of this option is required prior to multilink
- interpretation.
-
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 14]
-
-RFC 1990 PPP Multilink August 1996
-
-
-5.1.2. Short Sequence Number Header Format Option
-
- Figure 5: Short Sequence Number Header Format Option
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type = 18 | Length = 2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- This option advises the peer that the implementation wishes to
- receive fragments with short, 12 bit sequence numbers. When a peer
- system configure-Ack's this option, it MUST transmit all multilink
- packets on all links of the bundle with 12 bit sequence numbers or
- configure-Reject the option. If 12 bit sequence numbers are desired,
- this option MUST be negotiated when the bundle is instantiated, and
- MUST be explicitly included in every LCP configure request offered by
- a system when the system intends to include that link in an existing
- bundle using 12 bit sequence numbers. If this option is never
- negotiated during the life of a bundle, sequence numbers are 24 bits
- long.
-
- An implementation wishing to transmit multilink fragments with short
- sequence numbers MAY include the multilink short sequence number in a
- configure-NAK to ask that the peer respond with a request to receive
- short sequence numbers. The peer is not compelled to respond with
- the option.
-
-5.1.3. Endpoint Discriminator Option
-
- Figure 7: Endpoint Discriminator Option
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type = 19 | Length | Class | Address ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The Endpoint Discriminator Option represents identification of the
- system transmitting the packet. This option advises a system that
- the peer on this link could be the same as the peer on another
- existing link. If the option distinguishes this peer from all
- others, a new bundle MUST be established from the link being
- negotiated. If this option matches the class and address of some
- other peer of an existing link, the new link MUST be joined to the
- bundle containing the link to the matching peer or MUST establish a
- new bundle, depending on the decision tree shown in (1) through (4)
- below.
-
-
-
-Sklower, et. al. Standards Track [Page 15]
-
-RFC 1990 PPP Multilink August 1996
-
-
- To securely join an existing bundle, a PPP authentication protocol
- [3] must be used to obtain authenticated information from the peer to
- prevent a hostile peer from joining an existing bundle by presenting
- a falsified discriminator option.
-
- This option is not required for multilink operation. If a system
- does not receive the Multilink MRRU option, but does receive the
- Endpoint Discriminator Option, and there is no manual configuration
- providing outside information, the implementation MUST NOT assume
- that multilink operation is being requested on this basis alone.
-
- As there is also no requirement for authentication, there are four
- sets of scenarios:
-
- (1) No authentication, no discriminator:
- All new links MUST be joined to one bundle, unless
- there is manual configuration to the contrary.
- It is also permissible to have more than one manually
- configured bundle connecting two given systems.
-
- (2) Discriminator, no authentication:
- Discriminator match -> MUST join matching bundle,
- discriminator mismatch -> MUST establish new bundle.
-
- (3) No discriminator, authentication:
- Authenticated match -> MUST join matching bundle,
- authenticated mismatch -> MUST establish new bundle.
-
- (4) Discriminator, authentication:
- Discriminator match and authenticated match -> MUST join bundle,
- discriminator mismatch -> MUST establish new bundle,
- authenticated mismatch -> MUST establish new bundle.
-
- The option contains a Class which selects an identifier address space
- and an Address which selects a unique identifier within the class
- address space.
-
- This identifier is expected to refer to the mechanical equipment
- associated with the transmitting system. For some classes,
- uniqueness of the identifier is global and is not bounded by the
- scope of a particular administrative domain. Within each class,
- uniqueness of address values is controlled by a class dependent
- policy for assigning values.
-
- Each endpoint may chose an identifier class without restriction.
- Since the objective is to detect mismatches between endpoints
- erroneously assumed to be alike, mismatch on class alone is
- sufficient. Although no one class is recommended, classes which have
-
-
-
-Sklower, et. al. Standards Track [Page 16]
-
-RFC 1990 PPP Multilink August 1996
-
-
- universally unique values are preferred.
-
- This option is not required to be supported either by the system or
- the peer. If the option is not present in a Configure-Request, the
- system MUST NOT generate a Configure-Nak of this option for any
- reason; instead it SHOULD behave as if it had received the option
- with Class = 0, Address = 0. If a system receives a Configure-Nak or
- Configure-Reject of this option, it MUST remove it from any
- additional Configure-Request.
-
- The size is determined from the Length field of the element. For
- some classes, the length is fixed, for others the length is variable.
- The option is invalid if the Length field indicates a size below the
- minimum for the class.
-
- An implementation MAY use the Endpoint Discriminator to locate
- administration or authentication records in a local database. Such
- use of this option is incidental to its purpose and is deprecated
- when a PPP Authentication protocol [3] can be used instead. Since
- some classes permit the peer to generate random or locally assigned
- address values, use of this option as a database key requires prior
- agreement between peer administrators.
-
- The specification of the subfields are:
-
- Type
- 19 = for Endpoint Discriminator
-
- Length
- 3 + length of Address
-
- Class
- The Class field is one octet and indicates the identifier
- address space. The most up-to-date values of the LCP Endpoint
- Discriminator Class field are specified in the most recent
- "Assigned Numbers" RFC [7]. Current values are assigned as
- follows:
-
- 0 Null Class
-
- 1 Locally Assigned Address
-
- 2 Internet Protocol (IP) Address
-
- 3 IEEE 802.1 Globally Assigned MAC Address
-
- 4 PPP Magic-Number Block
-
-
-
-
-Sklower, et. al. Standards Track [Page 17]
-
-RFC 1990 PPP Multilink August 1996
-
-
- 5 Public Switched Network Directory Number
-
- Address
- The Address field is one or more octets and indicates the
- identifier address within the selected class. The length and
- content depend on the value of the Class as follows:
-
- Class 0 - Null Class
-
- Maximum Length: 0
-
- Content:
- This class is the default value if the option is not
- present in a received Configure-Request.
-
- Class 1 - Locally Assigned Address
-
- Maximum Length: 20
-
- Content:
-
- This class is defined to permit a local assignment in the
- case where use of one of the globally unique classes is not
- possible. Use of a device serial number is suggested. The
- use of this class is deprecated since uniqueness is not
- guaranteed.
-
- Class 2 - Internet Protocol (IP) Address
-
- Fixed Length: 4
-
- Content:
-
- An address in this class contains an IP host address as
- defined in [8].
-
- Class 3 - IEEE 802.1 Globally Assigned MAC Address
-
- Fixed Length: 6
-
- Content:
-
- An address in this class contains an IEEE 802.1 MAC address
- in canonical (802.3) format [9]. The address MUST have the
- global/local assignment bit clear and MUST have the
- multicast/specific bit clear. Locally assigned MAC
- addresses should be represented using Class 1.
-
-
-
-
-Sklower, et. al. Standards Track [Page 18]
-
-RFC 1990 PPP Multilink August 1996
-
-
- Class 4 - PPP Magic-Number Block
-
- Maximum Length: 20
-
- Content:
-
- This is not an address but a block of 1 to 5 concatenated
- 32 bit PPP Magic-Numbers as defined in [2]. This class
- provides for automatic generation of a value likely but not
- guaranteed to be unique. The same block MUST be used by an
- endpoint continuously during any period in which at least
- one link is in the LCP Open state. The use of this class
- is deprecated.
-
- Note that PPP Magic-Numbers are used in [2] to detect
- unexpected loopbacks of a link from an endpoint to itself.
- There is a small probability that two distinct endpoints
- will generate matching magic-numbers. This probability is
- geometrically reduced when the LCP negotiation is repeated
- in search of the desired mismatch, if a peer can generate
- uncorrelated magic-numbers.
-
- As used here, magic-numbers are used to determine if two
- links are in fact from the same peer endpoint or from two
- distinct endpoints. The numbers always match when there is
- one endpoint. There is a small probability that the
- numbers will match even if there are two endpoints. To
- achieve the same confidence that there is not a false match
- as for LCP loopback detection, several uncorrelated magic-
- numbers can be combined in one block.
-
- Class 5 - Public Switched Network Directory Number
-
- Maximum Length: 15
-
- Content:
-
- An address in this class contains an octet sequence as
- defined by I.331 (E.164) representing an international
- telephone directory number suitable for use to access the
- endpoint via the public switched telephone network [10].
-
-6. Initiating use of Multilink Headers
-
- When the use of the Multilink protocol has been negotiated on a link
- (say Y), and the link is being added to a bundle which currently
- contains a single existing link (say X), a system MUST transmit a
- Multilink-encapsulated packet on X before transmitting any Multilink-
-
-
-
-Sklower, et. al. Standards Track [Page 19]
-
-RFC 1990 PPP Multilink August 1996
-
-
- encapsulated packets on Y.
-
- Since links may be added and removed from a bundle without destroying
- the state associated with it, the fragment should be assigned the
- appropriate (next) fragment number. As noted earlier, the first
- fragment transmitted in the life of a bundle is assigned fragment
- number 0.
-
-7. Closing Member links
-
- Member links may be terminated according to normal PPP LCP procedures
- using LCP Terminate-Request and Terminate-Ack packets on that member
- link. Since it is assumed that member links usually do not reorder
- packets, receipt of a terminate ack is sufficient to assume that any
- multilink protocol packets ahead of it are at no special risk of
- loss.
-
- Receipt of an LCP Terminate-Request on one link does not conclude the
- procedure on the remaining links.
-
- So long as any member links in the bundle are active, the PPP state
- for the bundle persists as a separate entity. However, if the there
- is a unique link in the bundle, and all the other links were closed
- gracefully (with Terminate-Ack), an implementation MAY cease using
- multilink
- headers.
-
- If the multilink procedure is used in conjunction with PPP reliable
- transmission, and a member link is not closed gracefully, the
- implementation should expect to receive packets which violate the
- increasing sequence number rule.
-
-8. Interaction with Other Protocols
-
- In the common case, LCP, and the Authentication Control Protocol
- would be negotiated over each member link. The Network Protocols
- themselves and associated control exchanges would normally have been
- conducted once, on the bundle.
-
- In some instances it may be desirable for some Network Protocols to
- be exempted from sequencing requirements, and if the MRU sizes of the
- link did not cause fragmentation, those protocols could be sent
- directly over the member links.
-
- Although explicitly discouraged above, if there were several member
- links connecting two implementations, and independent sequencing of
- two protocol sets were desired, but blocking of one by the other was
- not, one could describe two multilink procedures by assigning
-
-
-
-Sklower, et. al. Standards Track [Page 20]
-
-RFC 1990 PPP Multilink August 1996
-
-
- multiple endpoint identifiers to a given system. Each member link,
- however, would only belong to one bundle. One could think of a
- physical router as housing two logically separate implementations,
- each of which is independently configured.
-
- A simpler solution would be to have one link refuse to join the
- bundle, by sending a Configure-Reject in response to the Multilink
- LCP option.
-
-9. Security Considerations
-
- Operation of this protocol is no more and no less secure than
- operation of the PPP authentication protocols [3]. The reader is
- directed there for further discussion.
-
-10. References
-
- [1] Leifer, D., Sheldon, S., and B. Gorsline, "A Subnetwork Control
- Protocol for ISDN Circuit-Switching", University of Michigan
- (unpublished), March 1991.
-
- [2] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD 51,
- RFC 1661, Daydreamer, July 1994.
-
- [3] Lloyd, B., and W. Simpson, "PPP Authentication Protocols", RFC
- 1334, Lloyd Internetworking, Daydreamer, October 1992.
-
- [4] International Organisation for Standardization, "HDLC -
- Description of the X.25 LAPB-Compatible DTE Data Link
- Procedures", International Standard 7776, 1988
-
- [5] Rand, D., "The PPP Compression Control Protocol (CCP)", PPP
- Extensions Working Group, RFC 1962, June 1996.
-
- [6] Rand, D., "PPP Reliable Transmission", RFC 1663, Novell, July
- 1994
-
- [7] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
- USC/Information Sciences Institute, October 1994.
-
- [8] Postel, J., Editor, "Internet Protocol - DARPA Internet Program
- Protocol Specification", STD 5, RFC 791, USC/Information Sciences
- Institute, September 1981.
-
- [9] Institute of Electrical and Electronics Engineers, Inc., "IEEE
- Local and Metropolitan Area Networks: Overview and Architecture",
- IEEE Std. 802-1990, 1990.
-
-
-
-
-Sklower, et. al. Standards Track [Page 21]
-
-RFC 1990 PPP Multilink August 1996
-
-
- [10] The International Telegraph and Telephone Consultative Committee
- (CCITT), "Numbering Plan for the ISDN Area", Recommendation I.331
- (E.164), 1988.
-
- [11] Simpson, W., Editor, "PPP LCP Extensions", RFC 1570, Daydreamer,
- January 1994.
-
-11. Differences from RFC 1717
-
- This section documents differences from RFC 1717. There are
- restrictions placed on implementations that were absent in RFC 1717;
- systems obeying these restrictions are fully interoperable with RFC
- 1717 - compliant systems.
-
-11.1. Negotiating Multilink, per se
-
- RFC 1717 permitted either the use of the Short Sequence Number Header
- Format (SSNHF) or the Maximum Reconstructed Receive Unit (MRRU)
- options by themselves to indicate the intent to negotiate multilink.
- This specification forbids the use of the SSNHF option by itself; but
- does permit the specific of both options together. Any
- implementation which otherwise conforms to rfc1717 and also obeys
- this restriction will interoperate with any RFC 1717 implementation.
-
-11.2. Initial Sequence Number defined
-
- This specification requires that the first sequence number
- transmitted after the virtual link has reached to open state be 0.
-
-11.3. Default Value of the MRRU
-
- This specfication removes the default value for the MRRU, (since it
- must always be negotiated with some value), and specifies that an
- implementation must be support an MRRU with same value as the default
- MRU size for PPP.
-
-11.4. Config-Nak of EID prohibited
-
- This specification forbids the config-Naking of an EID for any
- reason.
-
-11.5. Uniformity of Sequence Space
-
- This specification requires that the same sequence format be employed
- on all links in a bundle.
-
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 22]
-
-RFC 1990 PPP Multilink August 1996
-
-
-11.6. Commencing and Abating use of Multilink Headers
-
- This memo specifies how one should start the use of Multilink Headers
- when a link is added, and under what circumstances it is safe to
- discontinue their use.
-
-11.7. Manual Configuration and Bundle Assignment
-
- The document explicitly permits multiple bundles to be manually
- configured in the absence of both the Endpoint Descriminator and any
- form of authentication.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Sklower, et. al. Standards Track [Page 23]
-
-RFC 1990 PPP Multilink August 1996
-
-
-13. Authors' Addresses
-
- Keith Sklower
- Computer Science Department
- 384 Soda Hall, Mail Stop 1776
- University of California
- Berkeley, CA 94720-1776
-
- Phone: (510) 642-9587
- EMail: sklower@CS.Berkeley.EDU
-
-
- Brian Lloyd
- Lloyd Internetworking
- 3031 Alhambra Drive
- Cameron Park, CA 95682
-
- Phone: (916) 676-1147
- EMail: brian@lloyd.com
-
-
- Glenn McGregor
- Lloyd Internetworking
- 3031 Alhambra Drive
- Cameron Park, CA 95682
-
- Phone: (916) 676-1147
- EMail: glenn@lloyd.com
-
-
- Dave Carr
- Newbridge Networks Corporation
- 600 March Road
- P.O. Box 13600
- Kanata, Ontario,
- Canada, K2K 2E6
-
- Phone: (613) 591-3600
- EMail: dcarr@Newbridge.COM
-
-
- Tom Coradetti
- Sidewalk Software
- 1190 Josephine Road
- Roseville, MN 55113
-
- Phone: (612) 490 7856
- EMail: 70761.1664@compuserve.com
-
-
-
-Sklower, et. al. Standards Track [Page 24]
-
diff --git a/doc/rfc1994.txt b/doc/rfc1994.txt
deleted file mode 100644
index e4a553e..0000000
--- a/doc/rfc1994.txt
+++ /dev/null
@@ -1,732 +0,0 @@
-
-
-
-
-
-
-Network Working Group W. Simpson
-Request for Comments: 1994 DayDreamer
-Obsoletes: 1334 August 1996
-Category: Standards Track
-
-
- PPP Challenge Handshake Authentication Protocol (CHAP)
-
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method for
- transporting multi-protocol datagrams over point-to-point links.
-
- PPP also defines an extensible Link Control Protocol, which allows
- negotiation of an Authentication Protocol for authenticating its peer
- before allowing Network Layer protocols to transmit over the link.
-
- This document defines a method for Authentication using PPP, which
- uses a random Challenge, with a cryptographically hashed Response
- which depends upon the Challenge and a secret key.
-
-Table of Contents
-
- 1. Introduction .......................................... 1
- 1.1 Specification of Requirements ................... 1
- 1.2 Terminology ..................................... 2
- 2. Challenge-Handshake Authentication Protocol ........... 2
- 2.1 Advantages ...................................... 3
- 2.2 Disadvantages ................................... 3
- 2.3 Design Requirements ............................. 4
- 3. Configuration Option Format ........................... 5
- 4. Packet Format ......................................... 6
- 4.1 Challenge and Response .......................... 7
- 4.2 Success and Failure ............................. 9
- SECURITY CONSIDERATIONS ...................................... 10
- ACKNOWLEDGEMENTS ............................................. 11
- REFERENCES ................................................... 12
- CONTACTS ..................................................... 12
-
-
-
-
-Simpson [Page i]
-
-RFC 1994 PPP CHAP August 1996
-
-
-1. Introduction
-
- In order to establish communications over a point-to-point link, each
- end of the PPP link must first send LCP packets to configure the data
- link during Link Establishment phase. After the link has been
- established, PPP provides for an optional Authentication phase before
- proceeding to the Network-Layer Protocol phase.
-
- By default, authentication is not mandatory. If authentication of
- the link is desired, an implementation MUST specify the
- Authentication-Protocol Configuration Option during Link
- Establishment phase.
-
- These authentication protocols are intended for use primarily by
- hosts and routers that connect to a PPP network server via switched
- circuits or dial-up lines, but might be applied to dedicated links as
- well. The server can use the identification of the connecting host
- or router in the selection of options for network layer negotiations.
-
- This document defines a PPP authentication protocol. The Link
- Establishment and Authentication phases, and the Authentication-
- Protocol Configuration Option, are defined in The Point-to-Point
- Protocol (PPP) [1].
-
-
-1.1. Specification of Requirements
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized.
-
- MUST This word, or the adjective "required", means that the
- definition is an absolute requirement of the specification.
-
- MUST NOT This phrase means that the definition is an absolute
- prohibition of the specification.
-
- SHOULD This word, or the adjective "recommended", means that there
- may exist valid reasons in particular circumstances to
- ignore this item, but the full implications must be
- understood and carefully weighed before choosing a
- different course.
-
- MAY This word, or the adjective "optional", means that this
- item is one of an allowed set of alternatives. An
- implementation which does not include this option MUST be
- prepared to interoperate with another implementation which
- does include the option.
-
-
-
-
-Simpson [Page 1]
-
-RFC 1994 PPP CHAP August 1996
-
-
-1.2. Terminology
-
- This document frequently uses the following terms:
-
- authenticator
- The end of the link requiring the authentication. The
- authenticator specifies the authentication protocol to be
- used in the Configure-Request during Link Establishment
- phase.
-
- peer The other end of the point-to-point link; the end which is
- being authenticated by the authenticator.
-
- silently discard
- This means the implementation discards the packet without
- further processing. The implementation SHOULD provide the
- capability of logging the error, including the contents of
- the silently discarded packet, and SHOULD record the event
- in a statistics counter.
-
-
-
-
-2. Challenge-Handshake Authentication Protocol
-
- The Challenge-Handshake Authentication Protocol (CHAP) is used to
- periodically verify the identity of the peer using a 3-way handshake.
- This is done upon initial link establishment, and MAY be repeated
- anytime after the link has been established.
-
- 1. After the Link Establishment phase is complete, the
- authenticator sends a "challenge" message to the peer.
-
- 2. The peer responds with a value calculated using a "one-way
- hash" function.
-
- 3. The authenticator checks the response against its own
- calculation of the expected hash value. If the values match,
- the authentication is acknowledged; otherwise the connection
- SHOULD be terminated.
-
- 4. At random intervals, the authenticator sends a new challenge to
- the peer, and repeats steps 1 to 3.
-
-
-
-
-
-
-
-
-Simpson [Page 2]
-
-RFC 1994 PPP CHAP August 1996
-
-
-2.1. Advantages
-
- CHAP provides protection against playback attack by the peer through
- the use of an incrementally changing identifier and a variable
- challenge value. The use of repeated challenges is intended to limit
- the time of exposure to any single attack. The authenticator is in
- control of the frequency and timing of the challenges.
-
- This authentication method depends upon a "secret" known only to the
- authenticator and that peer. The secret is not sent over the link.
-
- Although the authentication is only one-way, by negotiating CHAP in
- both directions the same secret set may easily be used for mutual
- authentication.
-
- Since CHAP may be used to authenticate many different systems, name
- fields may be used as an index to locate the proper secret in a large
- table of secrets. This also makes it possible to support more than
- one name/secret pair per system, and to change the secret in use at
- any time during the session.
-
-
-2.2. Disadvantages
-
- CHAP requires that the secret be available in plaintext form.
- Irreversably encrypted password databases commonly available cannot
- be used.
-
- It is not as useful for large installations, since every possible
- secret is maintained at both ends of the link.
-
- Implementation Note: To avoid sending the secret over other links
- in the network, it is recommended that the challenge and response
- values be examined at a central server, rather than each network
- access server. Otherwise, the secret SHOULD be sent to such
- servers in a reversably encrypted form. Either case requires a
- trusted relationship, which is outside the scope of this
- specification.
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 3]
-
-RFC 1994 PPP CHAP August 1996
-
-
-2.3. Design Requirements
-
- The CHAP algorithm requires that the length of the secret MUST be at
- least 1 octet. The secret SHOULD be at least as large and
- unguessable as a well-chosen password. It is preferred that the
- secret be at least the length of the hash value for the hashing
- algorithm chosen (16 octets for MD5). This is to ensure a
- sufficiently large range for the secret to provide protection against
- exhaustive search attacks.
-
- The one-way hash algorithm is chosen such that it is computationally
- infeasible to determine the secret from the known challenge and
- response values.
-
- Each challenge value SHOULD be unique, since repetition of a
- challenge value in conjunction with the same secret would permit an
- attacker to reply with a previously intercepted response. Since it
- is expected that the same secret MAY be used to authenticate with
- servers in disparate geographic regions, the challenge SHOULD exhibit
- global and temporal uniqueness.
-
- Each challenge value SHOULD also be unpredictable, least an attacker
- trick a peer into responding to a predicted future challenge, and
- then use the response to masquerade as that peer to an authenticator.
-
- Although protocols such as CHAP are incapable of protecting against
- realtime active wiretapping attacks, generation of unique
- unpredictable challenges can protect against a wide range of active
- attacks.
-
- A discussion of sources of uniqueness and probability of divergence
- is included in the Magic-Number Configuration Option [1].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 4]
-
-RFC 1994 PPP CHAP August 1996
-
-
-3. Configuration Option Format
-
- A summary of the Authentication-Protocol Configuration Option format
- to negotiate the Challenge-Handshake Authentication Protocol is shown
- below. The fields are transmitted from left to right.
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Authentication-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Algorithm |
- +-+-+-+-+-+-+-+-+
-
- Type
-
- 3
-
- Length
-
- 5
-
- Authentication-Protocol
-
- c223 (hex) for Challenge-Handshake Authentication Protocol.
-
- Algorithm
-
- The Algorithm field is one octet and indicates the authentication
- method to be used. Up-to-date values are specified in the most
- recent "Assigned Numbers" [2]. One value is required to be
- implemented:
-
- 5 CHAP with MD5 [3]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 5]
-
-RFC 1994 PPP CHAP August 1996
-
-
-4. Packet Format
-
- Exactly one Challenge-Handshake Authentication Protocol packet is
- encapsulated in the Information field of a PPP Data Link Layer frame
- where the protocol field indicates type hex c223 (Challenge-Handshake
- Authentication Protocol). A summary of the CHAP packet format is
- shown below. The fields are transmitted from left to right.
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
- Code
-
- The Code field is one octet and identifies the type of CHAP
- packet. CHAP Codes are assigned as follows:
-
- 1 Challenge
- 2 Response
- 3 Success
- 4 Failure
-
- Identifier
-
- The Identifier field is one octet and aids in matching challenges,
- responses and replies.
-
- Length
-
- The Length field is two octets and indicates the length of the
- CHAP packet including the Code, Identifier, Length and Data
- fields. Octets outside the range of the Length field should be
- treated as Data Link Layer padding and should be ignored on
- reception.
-
- Data
-
- The Data field is zero or more octets. The format of the Data
- field is determined by the Code field.
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 6]
-
-RFC 1994 PPP CHAP August 1996
-
-
-4.1. Challenge and Response
-
- Description
-
- The Challenge packet is used to begin the Challenge-Handshake
- Authentication Protocol. The authenticator MUST transmit a CHAP
- packet with the Code field set to 1 (Challenge). Additional
- Challenge packets MUST be sent until a valid Response packet is
- received, or an optional retry counter expires.
-
- A Challenge packet MAY also be transmitted at any time during the
- Network-Layer Protocol phase to ensure that the connection has not
- been altered.
-
- The peer SHOULD expect Challenge packets during the Authentication
- phase and the Network-Layer Protocol phase. Whenever a Challenge
- packet is received, the peer MUST transmit a CHAP packet with the
- Code field set to 2 (Response).
-
- Whenever a Response packet is received, the authenticator compares
- the Response Value with its own calculation of the expected value.
- Based on this comparison, the authenticator MUST send a Success or
- Failure packet (described below).
-
- Implementation Notes: Because the Success might be lost, the
- authenticator MUST allow repeated Response packets during the
- Network-Layer Protocol phase after completing the
- Authentication phase. To prevent discovery of alternative
- Names and Secrets, any Response packets received having the
- current Challenge Identifier MUST return the same reply Code
- previously returned for that specific Challenge (the message
- portion MAY be different). Any Response packets received
- during any other phase MUST be silently discarded.
-
- When the Failure is lost, and the authenticator terminates the
- link, the LCP Terminate-Request and Terminate-Ack provide an
- alternative indication that authentication failed.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 7]
-
-RFC 1994 PPP CHAP August 1996
-
-
- A summary of the Challenge and Response packet format is shown below.
- The fields are transmitted from left to right.
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value-Size | Value ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Name ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Code
-
- 1 for Challenge;
-
- 2 for Response.
-
- Identifier
-
- The Identifier field is one octet. The Identifier field MUST be
- changed each time a Challenge is sent.
-
- The Response Identifier MUST be copied from the Identifier field
- of the Challenge which caused the Response.
-
- Value-Size
-
- This field is one octet and indicates the length of the Value
- field.
-
- Value
-
- The Value field is one or more octets. The most significant octet
- is transmitted first.
-
- The Challenge Value is a variable stream of octets. The
- importance of the uniqueness of the Challenge Value and its
- relationship to the secret is described above. The Challenge
- Value MUST be changed each time a Challenge is sent. The length
- of the Challenge Value depends upon the method used to generate
- the octets, and is independent of the hash algorithm used.
-
- The Response Value is the one-way hash calculated over a stream of
- octets consisting of the Identifier, followed by (concatenated
- with) the "secret", followed by (concatenated with) the Challenge
- Value. The length of the Response Value depends upon the hash
- algorithm used (16 octets for MD5).
-
-
-
-
-Simpson [Page 8]
-
-RFC 1994 PPP CHAP August 1996
-
-
- Name
-
- The Name field is one or more octets representing the
- identification of the system transmitting the packet. There are
- no limitations on the content of this field. For example, it MAY
- contain ASCII character strings or globally unique identifiers in
- ASN.1 syntax. The Name should not be NUL or CR/LF terminated.
- The size is determined from the Length field.
-
-
-4.2. Success and Failure
-
- Description
-
- If the Value received in a Response is equal to the expected
- value, then the implementation MUST transmit a CHAP packet with
- the Code field set to 3 (Success).
-
- If the Value received in a Response is not equal to the expected
- value, then the implementation MUST transmit a CHAP packet with
- the Code field set to 4 (Failure), and SHOULD take action to
- terminate the link.
-
- A summary of the Success and Failure packet format is shown below.
- The fields are transmitted from left to right.
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Message ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 3 for Success;
-
- 4 for Failure.
-
- Identifier
-
- The Identifier field is one octet and aids in matching requests
- and replies. The Identifier field MUST be copied from the
- Identifier field of the Response which caused this reply.
-
-
-
-
-
-
-
-
-Simpson [Page 9]
-
-RFC 1994 PPP CHAP August 1996
-
-
- Message
-
- The Message field is zero or more octets, and its contents are
- implementation dependent. It is intended to be human readable,
- and MUST NOT affect operation of the protocol. It is recommended
- that the message contain displayable ASCII characters 32 through
- 126 decimal. Mechanisms for extension to other character sets are
- the topic of future research. The size is determined from the
- Length field.
-
-
-
-Security Considerations
-
- Security issues are the primary topic of this RFC.
-
- The interaction of the authentication protocols within PPP are highly
- implementation dependent. This is indicated by the use of SHOULD
- throughout the document.
-
- For example, upon failure of authentication, some implementations do
- not terminate the link. Instead, the implementation limits the kind
- of traffic in the Network-Layer Protocols to a filtered subset, which
- in turn allows the user opportunity to update secrets or send mail to
- the network administrator indicating a problem.
-
- There is no provision for re-tries of failed authentication.
- However, the LCP state machine can renegotiate the authentication
- protocol at any time, thus allowing a new attempt. It is recommended
- that any counters used for authentication failure not be reset until
- after successful authentication, or subsequent termination of the
- failed link.
-
- There is no requirement that authentication be full duplex or that
- the same protocol be used in both directions. It is perfectly
- acceptable for different protocols to be used in each direction.
- This will, of course, depend on the specific protocols negotiated.
-
- The secret SHOULD NOT be the same in both directions. This allows an
- attacker to replay the peer's challenge, accept the computed
- response, and use that response to authenticate.
-
- In practice, within or associated with each PPP server, there is a
- database which associates "user" names with authentication
- information ("secrets"). It is not anticipated that a particular
- named user would be authenticated by multiple methods. This would
- make the user vulnerable to attacks which negotiate the least secure
- method from among a set (such as PAP rather than CHAP). If the same
-
-
-
-Simpson [Page 10]
-
-RFC 1994 PPP CHAP August 1996
-
-
- secret was used, PAP would reveal the secret to be used later with
- CHAP.
-
- Instead, for each user name there should be an indication of exactly
- one method used to authenticate that user name. If a user needs to
- make use of different authentication methods under different
- circumstances, then distinct user names SHOULD be employed, each of
- which identifies exactly one authentication method.
-
- Passwords and other secrets should be stored at the respective ends
- such that access to them is as limited as possible. Ideally, the
- secrets should only be accessible to the process requiring access in
- order to perform the authentication.
-
- The secrets should be distributed with a mechanism that limits the
- number of entities that handle (and thus gain knowledge of) the
- secret. Ideally, no unauthorized person should ever gain knowledge
- of the secrets. Such a mechanism is outside the scope of this
- specification.
-
-
-Acknowledgements
-
- David Kaufman, Frank Heinrich, and Karl Auerbach used a challenge
- handshake at SDC when designing one of the protocols for a "secure"
- network in the mid-1970s. Tom Bearson built a prototype Sytek
- product ("Poloneous"?) on the challenge-response notion in the 1982-
- 83 timeframe. Another variant is documented in the various IBM SNA
- manuals. Yet another variant was implemented by Karl Auerbach in the
- Telebit NetBlazer circa 1991.
-
- Kim Toms and Barney Wolff provided useful critiques of earlier
- versions of this document.
-
- Special thanks to Dave Balenson, Steve Crocker, James Galvin, and
- Steve Kent, for their extensive explanations and suggestions. Now,
- if only we could get them to agree with each other.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 11]
-
-RFC 1994 PPP CHAP August 1996
-
-
-References
-
- [1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD
- 51, RFC 1661, DayDreamer, July 1994.
-
- [2] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC
- 1700, USC/Information Sciences Institute, October 1994.
-
- [3] Rivest, R., and S. Dusse, "The MD5 Message-Digest Algorithm",
- MIT Laboratory for Computer Science and RSA Data Security,
- Inc., RFC 1321, April 1992.
-
-
-
-Contacts
-
- Comments should be submitted to the ietf-ppp@merit.edu mailing list.
-
- This document was reviewed by the Point-to-Point Protocol Working
- Group of the Internet Engineering Task Force (IETF). The working
- group can be contacted via the current chair:
-
- Karl Fox
- Ascend Communications
- 3518 Riverside Drive, Suite 101
- Columbus, Ohio 43221
-
- karl@MorningStar.com
- karl@Ascend.com
-
-
- Questions about this memo can also be directed to:
-
- William Allen Simpson
- DayDreamer
- Computer Systems Consulting Services
- 1384 Fontaine
- Madison Heights, Michigan 48071
-
- wsimpson@UMich.edu
- wsimpson@GreenDragon.com (preferred)
-
-
-
-
-
-
-
-
-
-
-Simpson [Page 12]
-
-
diff --git a/doc/rfc2138.txt b/doc/rfc2138.txt
deleted file mode 100644
index 9f4a86d..0000000
--- a/doc/rfc2138.txt
+++ /dev/null
@@ -1,3643 +0,0 @@
-
-
-
-
-
-
-Network Working Group C. Rigney
-Request for Comments: 2138 Livingston
-Obsoletes: 2058 A. Rubens
-Category: Standards Track Merit
- W. Simpson
- Daydreamer
- S. Willens
- Livingston
- April 1997
-
-
- Remote Authentication Dial In User Service (RADIUS)
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Abstract
-
- This document describes a protocol for carrying authentication,
- authorization, and configuration information between a Network Access
- Server which desires to authenticate its links and a shared
- Authentication Server.
-
-Implementation Note
-
- This memo documents the RADIUS protocol. There has been some
- confusion in the assignment of port numbers for this protocol. The
- early deployment of RADIUS was done using the erroneously chosen port
- number 1645, which conflicts with the "datametrics" service. The
- officially assigned port number for RADIUS is 1812.
-
-Table of Contents
-
- 1. Introduction .......................................... 3
- 1.1 Specification of Requirements ................... 4
- 1.2 Terminology ..................................... 5
- 2. Operation ............................................. 5
- 2.1 Challenge/Response .............................. 7
- 2.2 Interoperation with PAP and CHAP ................ 7
- 2.3 Why UDP? ........................................ 8
- 3. Packet Format ......................................... 10
- 4. Packet Types .......................................... 13
- 4.1 Access-Request .................................. 13
-
-
-
-Rigney, et. al. Standards Track [Page 1]
-
-RFC 2138 RADIUS April 1997
-
-
- 4.2 Access-Accept ................................... 14
- 4.3 Access-Reject ................................... 15
- 4.4 Access-Challenge ................................ 17
- 5. Attributes ............................................ 18
- 5.1 User-Name ....................................... 21
- 5.2 User-Password ................................... 22
- 5.3 CHAP-Password ................................... 23
- 5.4 NAS-IP-Address .................................. 24
- 5.5 NAS-Port ........................................ 25
- 5.6 Service-Type .................................... 26
- 5.7 Framed-Protocol ................................. 28
- 5.8 Framed-IP-Address ............................... 29
- 5.9 Framed-IP-Netmask ............................... 29
- 5.10 Framed-Routing .................................. 30
- 5.11 Filter-Id ....................................... 31
- 5.12 Framed-MTU ...................................... 32
- 5.13 Framed-Compression .............................. 33
- 5.14 Login-IP-Host ................................... 33
- 5.15 Login-Service ................................... 34
- 5.16 Login-TCP-Port .................................. 35
- 5.17 (unassigned) .................................... 36
- 5.18 Reply-Message ................................... 36
- 5.19 Callback-Number ................................. 37
- 5.20 Callback-Id ..................................... 38
- 5.21 (unassigned) .................................... 38
- 5.22 Framed-Route .................................... 39
- 5.23 Framed-IPX-Network .............................. 40
- 5.24 State ........................................... 40
- 5.25 Class ........................................... 41
- 5.26 Vendor-Specific ................................. 42
- 5.27 Session-Timeout ................................. 44
- 5.28 Idle-Timeout .................................... 44
- 5.29 Termination-Action .............................. 45
- 5.30 Called-Station-Id ............................... 46
- 5.31 Calling-Station-Id .............................. 47
- 5.32 NAS-Identifier .................................. 48
- 5.33 Proxy-State ..................................... 48
- 5.34 Login-LAT-Service ............................... 49
- 5.35 Login-LAT-Node .................................. 50
- 5.36 Login-LAT-Group ................................. 51
- 5.37 Framed-AppleTalk-Link ........................... 52
- 5.38 Framed-AppleTalk-Network ........................ 53
- 5.39 Framed-AppleTalk-Zone ........................... 54
- 5.40 CHAP-Challenge .................................. 55
- 5.41 NAS-Port-Type ................................... 55
- 5.42 Port-Limit ...................................... 56
- 5.43 Login-LAT-Port .................................. 57
- 5.44 Table of Attributes ............................. 58
-
-
-
-Rigney, et. al. Standards Track [Page 2]
-
-RFC 2138 RADIUS April 1997
-
-
- 6. Examples .............................................. 59
- 6.1 User Telnet to Specified Host ................... 60
- 6.2 Framed User Authenticating with CHAP ............ 60
- 6.3 User with Challenge-Response card ............... 61
- Security Considerations ...................................... 63
- References ................................................... 64
- Acknowledgements ............................................. 64
- Chair's Address .............................................. 65
- Author's Addresses ........................................... 65
-
-1. Introduction
-
- Managing dispersed serial line and modem pools for large numbers of
- users can create the need for significant administrative support.
- Since modem pools are by definition a link to the outside world, they
- require careful attention to security, authorization and accounting.
- This can be best achieved by managing a single "database" of users,
- which allows for authentication (verifying user name and password) as
- well as configuration information detailing the type of service to
- deliver to the user (for example, SLIP, PPP, telnet, rlogin).
-
- Key features of RADIUS are:
-
- Client/Server Model
-
- A Network Access Server (NAS) operates as a client of RADIUS. The
- client is responsible for passing user information to designated
- RADIUS servers, and then acting on the response which is returned.
-
- RADIUS servers are responsible for receiving user connection
- requests, authenticating the user, and then returning all
- configuration information necessary for the client to deliver
- service to the user.
-
- A RADIUS server can act as a proxy client to other RADIUS servers
- or other kinds of authentication servers.
-
- Network Security
-
- Transactions between the client and RADIUS server are
- authenticated through the use of a shared secret, which is never
- sent over the network. In addition, any user passwords are sent
- encrypted between the client and RADIUS server, to eliminate the
- possibility that someone snooping on an unsecure network could
- determine a user's password.
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 3]
-
-RFC 2138 RADIUS April 1997
-
-
- Flexible Authentication Mechanisms
-
- The RADIUS server can support a variety of methods to authenticate
- a user. When it is provided with the user name and original
- password given by the user, it can support PPP PAP or CHAP, UNIX
- login, and other authentication mechanisms.
-
- Extensible Protocol
-
- All transactions are comprised of variable length Attribute-
- Length-Value 3-tuples. New attribute values can be added without
- disturbing existing implementations of the protocol.
-
-1.1. Specification of Requirements
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized.
-
- MUST This word, or the adjective "required", means that the
- definition is an absolute requirement of the specification.
-
- MUST NOT This phrase means that the definition is an absolute
- prohibition of the specification.
-
- SHOULD This word, or the adjective "recommended", means that there
- may exist valid reasons in particular circumstances to
- ignore this item, but the full implications must be
- understood and carefully weighed before choosing a
- different course.
-
- MAY This word, or the adjective "optional", means that this
- item is one of an allowed set of alternatives. An
- implementation which does not include this option MUST be
- prepared to interoperate with another implementation which
- does include the option.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 4]
-
-RFC 2138 RADIUS April 1997
-
-
-1.2. Terminology
-
- This document frequently uses the following terms:
-
- service The NAS provides a service to the dial-in user, such as PPP
- or Telnet.
-
- session Each service provided by the NAS to a dial-in user
- constitutes a session, with the beginning of the session
- defined as the point where service is first provided and
- the end of the session defined as the point where service
- is ended. A user may have multiple sessions in parallel or
- series if the NAS supports that.
-
- silently discard
- This means the implementation discards the packet without
- further processing. The implementation SHOULD provide the
- capability of logging the error, including the contents of
- the silently discarded packet, and SHOULD record the event
- in a statistics counter.
-
-2. Operation
-
- When a client is configured to use RADIUS, any user of the client
- presents authentication information to the client. This might be
- with a customizable login prompt, where the user is expected to enter
- their username and password. Alternatively, the user might use a
- link framing protocol such as the Point-to-Point Protocol (PPP),
- which has authentication packets which carry this information.
-
- Once the client has obtained such information, it may choose to
- authenticate using RADIUS. To do so, the client creates an "Access-
- Request" containing such Attributes as the user's name, the user's
- password, the ID of the client and the Port ID which the user is
- accessing. When a password is present, it is hidden using a method
- based on the RSA Message Digest Algorithm MD5 [1].
-
- The Access-Request is submitted to the RADIUS server via the network.
- If no response is returned within a length of time, the request is
- re-sent a number of times. The client can also forward requests to
- an alternate server or servers in the event that the primary server
- is down or unreachable. An alternate server can be used either after
- a number of tries to the primary server fail, or in a round-robin
- fashion. Retry and fallback algorithms are the topic of current
- research and are not specified in detail in this document.
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 5]
-
-RFC 2138 RADIUS April 1997
-
-
- Once the RADIUS server receives the request, it validates the sending
- client. A request from a client for which the RADIUS server does not
- have a shared secret should be silently discarded. If the client is
- valid, the RADIUS server consults a database of users to find the
- user whose name matches the request. The user entry in the database
- contains a list of requirements which must be met to allow access for
- the user. This always includes verification of the password, but can
- also specify the client(s) or port(s) to which the user is allowed
- access.
-
- The RADIUS server MAY make requests of other servers in order to
- satisfy the request, in which case it acts as a client.
-
- If any condition is not met, the RADIUS server sends an "Access-
- Reject" response indicating that this user request is invalid. If
- desired, the server MAY include a text message in the Access-Reject
- which MAY be displayed by the client to the user. No other
- Attributes are permitted in an Access-Reject.
-
- If all conditions are met and the RADIUS server wishes to issue a
- challenge to which the user must respond, the RADIUS server sends an
- "Access-Challenge" response. It MAY include a text message to be
- displayed by the client to the user prompting for a response to the
- challenge, and MAY include a State attribute. If the client receives
- an Access-Challenge and supports challenge/response it MAY display
- the text message, if any, to the user, and then prompt the user for a
- response. The client then re-submits its original Access-Request
- with a new request ID, with the User-Password Attribute replaced by
- the response (encrypted), and including the State Attribute from the
- Access-Challenge, if any. Only 0 or 1 instances of the State
- Attributes should be present in a request. The server can respond to
- this new Access-Request with either an Access-Accept, an Access-
- Reject, or another Access-Challenge.
-
- If all conditions are met, the list of configuration values for the
- user are placed into an "Access-Accept" response. These values
- include the type of service (for example: SLIP, PPP, Login User) and
- all necessary values to deliver the desired service. For SLIP and
- PPP, this may include values such as IP address, subnet mask, MTU,
- desired compression, and desired packet filter identifiers. For
- character mode users, this may include values such as desired
- protocol and host.
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 6]
-
-RFC 2138 RADIUS April 1997
-
-
-2.1. Challenge/Response
-
- In challenge/response authentication, the user is given an
- unpredictable number and challenged to encrypt it and give back the
- result. Authorized users are equipped with special devices such as
- smart cards or software that facilitate calculation of the correct
- response with ease. Unauthorized users, lacking the appropriate
- device or software and lacking knowledge of the secret key necessary
- to emulate such a device or software, can only guess at the response.
-
- The Access-Challenge packet typically contains a Reply-Message
- including a challenge to be displayed to the user, such as a numeric
- value unlikely ever to be repeated. Typically this is obtained from
- an external server that knows what type of authenticator should be in
- the possession of the authorized user and can therefore choose a
- random or non-repeating pseudorandom number of an appropriate radix
- and length.
-
- The user then enters the challenge into his device (or software) and
- it calculates a response, which the user enters into the client which
- forwards it to the RADIUS server via a second Access-Request. If the
- response matches the expected response the RADIUS server replies with
- an Access-Accept, otherwise an Access-Reject.
-
- Example: The NAS sends an Access-Request packet to the RADIUS Server
- with NAS-Identifier, NAS-Port, User-Name, User-Password (which may
- just be a fixed string like "challenge" or ignored). The server
- sends back an Access-Challenge packet with State and a Reply-Message
- along the lines of "Challenge 12345678, enter your response at the
- prompt" which the NAS displays. The NAS prompts for the response and
- sends a NEW Access-Request to the server (with a new ID) with NAS-
- Identifier, NAS-Port, User-Name, User-Password (the response just
- entered by the user, encrypted), and the same State Attribute that
- came with the Access-Challenge. The server then sends back either an
- Access-Accept or Access-Reject based on whether the response matches
- what it should be, or it can even send another Access-Challenge.
-
-2.2. Interoperation with PAP and CHAP
-
- For PAP, the NAS takes the PAP ID and password and sends them in an
- Access-Request packet as the User-Name and User-Password. The NAS MAY
- include the Attributes Service-Type = Framed-User and Framed-Protocol
- = PPP as a hint to the RADIUS server that PPP service is expected.
-
- For CHAP, the NAS generates a random challenge (preferably 16 octets)
- and sends it to the user, who returns a CHAP response along with a
- CHAP ID and CHAP username. The NAS then sends an Access-Request
- packet to the RADIUS server with the CHAP username as the User-Name
-
-
-
-Rigney, et. al. Standards Track [Page 7]
-
-RFC 2138 RADIUS April 1997
-
-
- and with the CHAP ID and CHAP response as the CHAP-Password
- (Attribute 3). The random challenge can either be included in the
- CHAP-Challenge attribute or, if it is 16 octets long, it can be
- placed in the Request Authenticator field of the Access-Request
- packet. The NAS MAY include the Attributes Service-Type = Framed-
- User and Framed-Protocol = PPP as a hint to the RADIUS server that
- PPP service is expected.
-
- The RADIUS server looks up a password based on the User-Name,
- encrypts the challenge using MD5 on the CHAP ID octet, that password,
- and the CHAP challenge (from the CHAP-Challenge attribute if present,
- otherwise from the Request Authenticator), and compares that result
- to the CHAP-Password. If they match, the server sends back an
- Access-Accept, otherwise it sends back an Access-Reject.
-
- If the RADIUS server is unable to perform the requested
- authentication it should return an Access-Reject. For example, CHAP
- requires that the user's password be available in cleartext to the
- server so that it can encrypt the CHAP challenge and compare that to
- the CHAP response. If the password is not available in cleartext to
- the RADIUS server then the server MUST send an Access-Reject to the
- client.
-
-2.3. Why UDP?
-
- A frequently asked question is why RADIUS uses UDP instead of TCP as
- a transport protocol. UDP was chosen for strictly technical reasons.
-
- There are a number of issues which must be understood. RADIUS is a
- transaction based protocol which has several interesting
- characteristics:
-
- 1. If the request to a primary Authentication server fails, a
- secondary server must be queried.
-
- To meet this requirement, a copy of the request must be kept
- above the transport layer to allow for alternate transmission.
- This means that retransmission timers are still required.
-
- 2. The timing requirements of this particular protocol are
- significantly different than TCP provides.
-
- At one extreme, RADIUS does not require a "responsive"
- detection of lost data. The user is willing to wait several
- seconds for the authentication to complete. The generally
- aggressive TCP retransmission (based on average round trip
- time) is not required, nor is the acknowledgement overhead of
- TCP.
-
-
-
-Rigney, et. al. Standards Track [Page 8]
-
-RFC 2138 RADIUS April 1997
-
-
- At the other extreme, the user is not willing to wait several
- minutes for authentication. Therefore the reliable delivery of
- TCP data two minutes later is not useful. The faster use of an
- alternate server allows the user to gain access before giving
- up.
-
- 3. The stateless nature of this protocol simplifies the use of UDP.
-
- Clients and servers come and go. Systems are rebooted, or are
- power cycled independently. Generally this does not cause a
- problem and with creative timeouts and detection of lost TCP
- connections, code can be written to handle anomalous events.
- UDP however completely eliminates any of this special handling.
- Each client and server can open their UDP transport just once
- and leave it open through all types of failure events on the
- network.
-
- 4. UDP simplifies the server implementation.
-
- In the earliest implementations of RADIUS, the server was
- single threaded. This means that a single request was
- received, processed, and returned. This was found to be
- unmanageable in environments where the back-end security
- mechanism took real time (1 or more seconds). The server
- request queue would fill and in environments where hundreds of
- people were being authenticated every minute, the request
- turn-around time increased to longer that users were willing to
- wait (this was especially severe when a specific lookup in a
- database or over DNS took 30 or more seconds). The obvious
- solution was to make the server multi-threaded. Achieving this
- was simple with UDP. Separate processes were spawned to serve
- each request and these processes could respond directly to the
- client NAS with a simple UDP packet to the original transport
- of the client.
-
- It's not all a panacea. As noted, using UDP requires one thing
- which is built into TCP: with UDP we must artificially manage
- retransmission timers to the same server, although they don't
- require the same attention to timing provided by TCP. This one
- penalty is a small price to pay for the advantages of UDP in
- this protocol.
-
- Without TCP we would still probably be using tin cans connected
- by string. But for this particular protocol, UDP is a better
- choice.
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 9]
-
-RFC 2138 RADIUS April 1997
-
-
-3. Packet Format
-
- Exactly one RADIUS packet is encapsulated in the UDP Data field [2],
- where the UDP Destination Port field indicates 1812 (decimal).
-
- When a reply is generated, the source and destination ports are
- reversed.
-
- This memo documents the RADIUS protocol. There has been some
- confusion in the assignment of port numbers for this protocol. The
- early deployment of RADIUS was done using the erroneously chosen port
- number 1645, which conflicts with the "datametrics" service. The
- officially assigned port number for RADIUS is 1812.
-
- A summary of the RADIUS data format is shown below. The fields are
- transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
-Code
-
- The Code field is one octet, and identifies the type of RADIUS
- packet. When a packet is received with an invalid Code field, it is
- silently discarded.
-
- RADIUS Codes (decimal) are assigned as follows:
-
- 1 Access-Request
- 2 Access-Accept
- 3 Access-Reject
- 4 Accounting-Request
- 5 Accounting-Response
- 11 Access-Challenge
- 12 Status-Server (experimental)
- 13 Status-Client (experimental)
- 255 Reserved
-
-
-
-
-Rigney, et. al. Standards Track [Page 10]
-
-RFC 2138 RADIUS April 1997
-
-
- Codes 4 and 5 are covered in the RADIUS Accounting document [9], and
- are not further mentioned here. Codes 12 and 13 are reserved for
- possible use, but are not further mentioned here.
-
-Identifier
-
- The Identifier field is one octet, and aids in matching requests and
- replies.
-
-Length
-
- The Length field is two octets. It indicates the length of the
- packet including the Code, Identifier, Length, Authenticator and
- Attribute fields. Octets outside the range of the Length field
- should be treated as padding and should be ignored on reception. If
- the packet is shorter than the Length field indicates, it should be
- silently discarded. The minimum length is 20 and maximum length is
- 4096.
-
-Authenticator
-
- The Authenticator field is sixteen (16) octets. The most significant
- octet is transmitted first. This value is used to authenticate the
- reply from the RADIUS server, and is used in the password hiding
- algorithm.
-
-Request Authenticator
-
- In Access-Request Packets, the Authenticator value is a 16 octet
- random number, called the Request Authenticator. The value SHOULD
- be unpredictable and unique over the lifetime of a secret (the
- password shared between the client and the RADIUS server), since
- repetition of a request value in conjunction with the same secret
- would permit an attacker to reply with a previously intercepted
- response. Since it is expected that the same secret MAY be used
- to authenticate with servers in disparate geographic regions, the
- Request Authenticator field SHOULD exhibit global and temporal
- uniqueness.
-
- The Request Authenticator value in an Access-Request packet SHOULD
- also be unpredictable, lest an attacker trick a server into
- responding to a predicted future request, and then use the
- response to masquerade as that server to a future Access-Request.
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 11]
-
-RFC 2138 RADIUS April 1997
-
-
- Although protocols such as RADIUS are incapable of protecting
- against theft of an authenticated session via realtime active
- wiretapping attacks, generation of unique unpredictable requests
- can protect against a wide range of active attacks against
- authentication.
-
- The NAS and RADIUS server share a secret. That shared secret
- followed by the Request Authenticator is put through a one-way MD5
- hash to create a 16 octet digest value which is xored with the
- password entered by the user, and the xored result placed in the
- User-Password attribute in the Access-Request packet. See the
- entry for User-Password in the section on Attributes for a more
- detailed description.
-
- Response Authenticator
-
- The value of the Authenticator field in Access-Accept, Access-
- Reject, and Access-Challenge packets is called the Response
- Authenticator, and contains a one-way MD5 hash calculated over a
- stream of octets consisting of: the RADIUS packet, beginning with
- the Code field, including the Identifier, the Length, the Request
- Authenticator field from the Access-Request packet, and the
- response Attributes, followed by the shared secret. That is,
- ResponseAuth = MD5(Code+ID+Length+RequestAuth+Attributes+Secret)
- where + denotes concatenation.
-
-Administrative Note
-
- The secret (password shared between the client and the RADIUS server)
- SHOULD be at least as large and unguessable as a well-chosen
- password. It is preferred that the secret be at least 16 octets.
- This is to ensure a sufficiently large range for the secret to
- provide protection against exhaustive search attacks. A RADIUS
- server SHOULD use the source IP address of the RADIUS UDP packet to
- decide which shared secret to use, so that RADIUS requests can be
- proxied.
-
- When using a forwarding proxy, the proxy must be able to alter the
- packet as it passes through in each direction - when the proxy
- forwards the request, the proxy can add a Proxy-State Attribute, and
- when the proxy forwards a response, it removes the Proxy-State
- Attribute. Since Access-Accept and Access-Reject replies are
- authenticated on the entire packet contents, the stripping of the
- Proxy-State attribute would invalidate the signature in the packet -
- so the proxy has to re-sign it.
-
- Further details of RADIUS proxy implementation are outside the scope
- of this document.
-
-
-
-Rigney, et. al. Standards Track [Page 12]
-
-RFC 2138 RADIUS April 1997
-
-
-Attributes
-
- Many Attributes may have multiple instances, in such a case the order
- of Attributes of the same Type SHOULD be preserved. The order of
- Attributes of different Types is not required to be preserved.
-
- In the section below on "Attributes" where the text refers to which
- packets an attribute is allowed in, only packets with Codes 1, 2, 3
- and 11 and attributes defined in this document are covered in this
- document. A summary table is provided at the end of the "Attributes"
- section. To determine which Attributes are allowed in packets with
- codes 4 and 5 refer to the RADIUS Accounting document [9].
-
-4. Packet Types
-
- The RADIUS Packet type is determined by the Code field in the first
- octet of the Packet.
-
-4.1. Access-Request
-
- Description
-
- Access-Request packets are sent to a RADIUS server, and convey
- information used to determine whether a user is allowed access to
- a specific NAS, and any special services requested for that user.
- An implementation wishing to authenticate a user MUST transmit a
- RADIUS packet with the Code field set to 1 (Access-Request).
-
- Upon receipt of an Access-Request from a valid client, an
- appropriate reply MUST be transmitted.
-
- An Access-Request MUST contain a User-Name attribute. It SHOULD
- contain either a NAS-IP-Address attribute or NAS-Identifier
- attribute (or both, although that is not recommended). It MUST
- contain either a User-Password attribute or CHAP-Password
- attribute. It SHOULD contain a NAS-Port or NAS-Port-Type
- attribute or both unless the type of access being requested does
- not involve a port or the NAS does not distinguish among its
- ports.
-
- An Access-Request MAY contain additional attributes as a hint to
- the server, but the server is not required to honor the hint.
-
- When a User-Password is present, it is hidden using a method based
- on the RSA Message Digest Algorithm MD5 [1].
-
- A summary of the Access-Request packet format is shown below. The
- fields are transmitted from left to right.
-
-
-
-Rigney, et. al. Standards Track [Page 13]
-
-RFC 2138 RADIUS April 1997
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Request Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 1 for Access-Request.
-
- Identifier
-
- The Identifier field MUST be changed whenever the content of the
- Attributes field changes, and whenever a valid reply has been
- received for a previous request. For retransmissions, the
- Identifier MUST remain unchanged.
-
- Request Authenticator
-
- The Request Authenticator value MUST be changed each time a new
- Identifier is used.
-
- Attributes
-
- The Attribute field is variable in length, and contains the list
- of Attributes that are required for the type of service, as well
- as any desired optional Attributes.
-
-4.2. Access-Accept
-
- Description
-
- Access-Accept packets are sent by the RADIUS server, and provide
- specific configuration information necessary to begin delivery of
- service to the user. If all Attribute values received in an
- Access-Request are acceptable then the RADIUS implementation MUST
- transmit a packet with the Code field set to 2 (Access-Accept).
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 14]
-
-RFC 2138 RADIUS April 1997
-
-
- On reception of an Access-Accept, the Identifier field is matched
- with a pending Access-Request. Additionally, the Response
- Authenticator field MUST contain the correct response for the
- pending Access-Request. Invalid packets are silently discarded.
-
- A summary of the Access-Accept packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Response Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 2 for Access-Accept.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Access-Request which caused this Access-Accept.
-
- Response Authenticator
-
- The Response Authenticator value is calculated from the Access-
- Request value, as described earlier.
-
- Attributes
-
- The Attribute field is variable in length, and contains a list of
- zero or more Attributes.
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 15]
-
-RFC 2138 RADIUS April 1997
-
-
-4.3. Access-Reject
-
- Description
-
- If any value of the received Attributes is not acceptable, then
- the RADIUS server MUST transmit a packet with the Code field set
- to 3 (Access-Reject). It MAY include one or more Reply-Message
- Attributes with a text message which the NAS MAY display to the
- user.
-
- A summary of the Access-Reject packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Response Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 3 for Access-Reject.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Access-Request which caused this Access-Reject.
-
- Response Authenticator
-
- The Response Authenticator value is calculated from the Access-
- Request value, as described earlier.
-
- Attributes
-
- The Attribute field is variable in length, and contains a list of
- zero or more Attributes.
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 16]
-
-RFC 2138 RADIUS April 1997
-
-
-4.4. Access-Challenge
-
- Description
-
- If the RADIUS server desires to send the user a challenge
- requiring a response, then the RADIUS server MUST respond to the
- Access-Request by transmitting a packet with the Code field set to
- 11 (Access-Challenge).
-
- The Attributes field MAY have one or more Reply-Message
- Attributes, and MAY have a single State Attribute, or none. No
- other Attributes are permitted in an Access-Challenge.
-
- On receipt of an Access-Challenge, the Identifier field is matched
- with a pending Access-Request. Additionally, the Response
- Authenticator field MUST contain the correct response for the
- pending Access-Request. Invalid packets are silently discarded.
-
- If the NAS does not support challenge/response, it MUST treat an
- Access-Challenge as though it had received an Access-Reject
- instead.
-
- If the NAS supports challenge/response, receipt of a valid
- Access-Challenge indicates that a new Access-Request SHOULD be
- sent. The NAS MAY display the text message, if any, to the user,
- and then prompt the user for a response. It then sends its
- original Access-Request with a new request ID and Request
- Authenticator, with the User-Password Attribute replaced by the
- user's response (encrypted), and including the State Attribute
- from the Access-Challenge, if any. Only 0 or 1 instances of the
- State Attribute can be present in an Access-Request.
-
- A NAS which supports PAP MAY forward the Reply-Message to the
- dialin client and accept a PAP response which it can use as though
- the user had entered the response. If the NAS cannot do so, it
- should treat the Access-Challenge as though it had received an
- Access-Reject instead.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 17]
-
-RFC 2138 RADIUS April 1997
-
-
- A summary of the Access-Challenge packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Response Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 11 for Access-Challenge.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Access-Request which caused this Access-Challenge.
-
- Response Authenticator
-
- The Response Authenticator value is calculated from the Access-
- Request value, as described earlier.
-
- Attributes
-
- The Attributes field is variable in length, and contains a list of
- zero or more Attributes.
-
-5. Attributes
-
- RADIUS Attributes carry the specific authentication, authorization,
- information and configuration details for the request and reply.
-
- Some Attributes MAY be included more than once. The effect of this
- is Attribute specific, and is specified in each Attribute
- description.
-
- The end of the list of Attributes is indicated by the Length of the
- RADIUS packet.
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 18]
-
-RFC 2138 RADIUS April 1997
-
-
- A summary of the Attribute format is shown below. The fields are
- transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | Value ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- The Type field is one octet. Up-to-date values of the RADIUS Type
- field are specified in the most recent "Assigned Numbers" RFC [3].
- Values 192-223 are reserved for experimental use, values 224-240
- are reserved for implementation-specific use, and values 241-255
- are reserved and should not be used. This specification concerns
- the following values:
-
- A RADIUS server MAY ignore Attributes with an unknown Type.
-
- A RADIUS client MAY ignore Attributes with an unknown Type.
-
- 1 User-Name
- 2 User-Password
- 3 CHAP-Password
- 4 NAS-IP-Address
- 5 NAS-Port
- 6 Service-Type
- 7 Framed-Protocol
- 8 Framed-IP-Address
- 9 Framed-IP-Netmask
- 10 Framed-Routing
- 11 Filter-Id
- 12 Framed-MTU
- 13 Framed-Compression
- 14 Login-IP-Host
- 15 Login-Service
- 16 Login-TCP-Port
- 17 (unassigned)
- 18 Reply-Message
- 19 Callback-Number
- 20 Callback-Id
- 21 (unassigned)
- 22 Framed-Route
- 23 Framed-IPX-Network
- 24 State
- 25 Class
- 26 Vendor-Specific
-
-
-
-Rigney, et. al. Standards Track [Page 19]
-
-RFC 2138 RADIUS April 1997
-
-
- 27 Session-Timeout
- 28 Idle-Timeout
- 29 Termination-Action
- 30 Called-Station-Id
- 31 Calling-Station-Id
- 32 NAS-Identifier
- 33 Proxy-State
- 34 Login-LAT-Service
- 35 Login-LAT-Node
- 36 Login-LAT-Group
- 37 Framed-AppleTalk-Link
- 38 Framed-AppleTalk-Network
- 39 Framed-AppleTalk-Zone
- 40-59 (reserved for accounting)
- 60 CHAP-Challenge
- 61 NAS-Port-Type
- 62 Port-Limit
- 63 Login-LAT-Port
-
- Length
-
- The Length field is one octet, and indicates the length of this
- Attribute including the Type, Length and Value fields. If an
- Attribute is received in an Access-Request but with an invalid
- Length, an Access-Reject SHOULD be transmitted. If an Attribute
- is received in an Access-Accept, Access-Reject or Access-Challenge
- packet with an invalid length, the packet MUST either be treated
- an Access-Reject or else silently discarded.
-
- Value
-
- The Value field is zero or more octets and contains information
- specific to the Attribute. The format and length of the Value
- field is determined by the Type and Length fields.
-
- Note that a "string" in RADIUS does not require termination by an
- ASCII NUL because the Attribute already has a length field.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 20]
-
-RFC 2138 RADIUS April 1997
-
-
- The format of the value field is one of four data types.
-
- string 0-253 octets
-
- address 32 bit value, most significant octet first.
-
- integer 32 bit value, most significant octet first.
-
- time 32 bit value, most significant octet first -- seconds
- since 00:00:00 GMT, January 1, 1970. The standard
- Attributes do not use this data type but it is presented
- here for possible use within Vendor-Specific attributes.
-
-
-5.1. User-Name
-
- Description
-
- This Attribute indicates the name of the user to be authenticated.
- It is only used in Access-Request packets.
-
- A summary of the User-Name Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 1 for User-Name.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The NAS may limit the
- maximum length of the User-Name but the ability to handle at least
- 63 octets is recommended.
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 21]
-
-RFC 2138 RADIUS April 1997
-
-
- The format of the username MAY be one of several forms:
-
- monolithic Consisting only of alphanumeric characters. This
- simple form might be used to locally manage a NAS.
-
- simple Consisting only of printable ASCII characters.
-
- name@fqdn SMTP address. The Fully Qualified Domain Name (with or
- without trailing dot) indicates the realm in which the
- name part applies.
-
- distinguished name
- A name in ASN.1 form used in Public Key authentication
- systems.
-
-5.2. User-Password
-
- Description
-
- This Attribute indicates the password of the user to be
- authenticated, or the user's input following an Access-Challenge.
- It is only used in Access-Request packets.
-
- On transmission, the password is hidden. The password is first
- padded at the end with nulls to a multiple of 16 octets. A one-
- way MD5 hash is calculated over a stream of octets consisting of
- the shared secret followed by the Request Authenticator. This
- value is XORed with the first 16 octet segment of the password and
- placed in the first 16 octets of the String field of the User-
- Password Attribute.
-
- If the password is longer than 16 characters, a second one-way MD5
- hash is calculated over a stream of octets consisting of the
- shared secret followed by the result of the first xor. That hash
- is XORed with the second 16 octet segment of the password and
- placed in the second 16 octets of the String field of the User-
- Password Attribute.
-
- If necessary, this operation is repeated, with each xor result
- being used along with the shared secret to generate the next hash
- to xor the next segment of the password, to no more than 128
- characters.
-
- The method is taken from the book "Network Security" by Kaufman,
- Perlman and Speciner [4] pages 109-110. A more precise
- explanation of the method follows:
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 22]
-
-RFC 2138 RADIUS April 1997
-
-
- Call the shared secret S and the pseudo-random 128-bit Request
- Authenticator RA. Break the password into 16-octet chunks p1, p2,
- etc. with the last one padded at the end with nulls to a 16-octet
- boundary. Call the ciphertext blocks c(1), c(2), etc. We'll need
- intermediate values b1, b2, etc.
-
- b1 = MD5(S + RA) c(1) = p1 xor b1
- b2 = MD5(S + c(1)) c(2) = p2 xor b2
- . .
- . .
- . .
- bi = MD5(S + c(i-1)) c(i) = pi xor bi
-
- The String will contain c(1)+c(2)+...+c(i) where + denotes
- concatenation.
-
- On receipt, the process is reversed to yield the original
- password.
-
- A summary of the User-Password Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 2 for User-Password.
-
- Length
-
- At least 18 and no larger than 130.
-
- String
-
- The String field is between 16 and 128 octets long, inclusive.
-
-5.3. CHAP-Password
-
- Description
-
- This Attribute indicates the response value provided by a PPP
- Challenge-Handshake Authentication Protocol (CHAP) user in
- response to the challenge. It is only used in Access-Request
- packets.
-
-
-
-Rigney, et. al. Standards Track [Page 23]
-
-RFC 2138 RADIUS April 1997
-
-
- The CHAP challenge value is found in the CHAP-Challenge Attribute
- (60) if present in the packet, otherwise in the Request
- Authenticator field.
-
- A summary of the CHAP-Password Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | CHAP Ident | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 3 for CHAP-Password.
-
- Length
-
- 19
-
- CHAP Ident
-
- This field is one octet, and contains the CHAP Identifier from the
- user's CHAP Response.
-
- String
-
- The String field is 16 octets, and contains the CHAP Response from
- the user.
-
-5.4. NAS-IP-Address
-
- Description
-
- This Attribute indicates the identifying IP Address of the NAS
- which is requesting authentication of the user. It is only used
- in Access-Request packets. Either NAS-IP-Address or NAS-
- Identifier SHOULD be present in an Access-Request packet.
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 24]
-
-RFC 2138 RADIUS April 1997
-
-
- A summary of the NAS-IP-Address Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 4 for NAS-IP-Address.
-
- Length
-
- 6
-
- Address
-
- The Address field is four octets.
-
-5.5. NAS-Port
-
- Description
-
- This Attribute indicates the physical port number of the NAS which
- is authenticating the user. It is only used in Access-Request
- packets. Note that this is using "port" in its sense of a
- physical connection on the NAS, not in the sense of a TCP or UDP
- port number. Either NAS-Port or NAS-Port-Type (61) or both SHOULD
- be present in an Access-Request packet, if the NAS differentiates
- among its ports.
-
- A summary of the NAS-Port Attribute format is shown below. The
- fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 25]
-
-RFC 2138 RADIUS April 1997
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 5 for NAS-Port.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. Despite the size of the field,
- values range from 0 to 65535.
-
-5.6. Service-Type
-
- Description
-
- This Attribute indicates the type of service the user has
- requested, or the type of service to be provided. It MAY be used
- in both Access-Request and Access-Accept packets. A NAS is not
- required to implement all of these service types, and MUST treat
- unknown or unsupported Service-Types as though an Access-Reject
- had been received instead.
-
- A summary of the Service-Type Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 6 for Service-Type.
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 26]
-
-RFC 2138 RADIUS April 1997
-
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 1 Login
- 2 Framed
- 3 Callback Login
- 4 Callback Framed
- 5 Outbound
- 6 Administrative
- 7 NAS Prompt
- 8 Authenticate Only
- 9 Callback NAS Prompt
-
-
- The service types are defined as follows when used in an Access-
- Accept. When used in an Access-Request, they should be considered
- to be a hint to the RADIUS server that the NAS has reason to
- believe the user would prefer the kind of service indicated, but
- the server is not required to honor the hint.
-
- Login The user should be connected to a host.
-
- Framed A Framed Protocol should be started for the
- User, such as PPP or SLIP.
-
- Callback Login The user should be disconnected and called
- back, then connected to a host.
-
- Callback Framed The user should be disconnected and called
- back, then a Framed Protocol should be started
- for the User, such as PPP or SLIP.
-
- Outbound The user should be granted access to outgoing
- devices.
-
- Administrative The user should be granted access to the
- administrative interface to the NAS from which
- privileged commands can be executed.
-
- NAS Prompt The user should be provided a command prompt
- on the NAS from which non-privileged commands
- can be executed.
-
-
-
-
-Rigney, et. al. Standards Track [Page 27]
-
-RFC 2138 RADIUS April 1997
-
-
- Authenticate Only Only Authentication is requested, and no
- authorization information needs to be returned
- in the Access-Accept (typically used by proxy
- servers rather than the NAS itself).
-
- Callback NAS Prompt The user should be disconnected and called
- back, then provided a command prompt on the
- NAS from which non-privileged commands can be
- executed.
-
-5.7. Framed-Protocol
-
- Description
-
- This Attribute indicates the framing to be used for framed access.
- It MAY be used in both Access-Request and Access-Accept packets.
-
- A summary of the Framed-Protocol Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 7 for Framed-Protocol.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 1 PPP
- 2 SLIP
- 3 AppleTalk Remote Access Protocol (ARAP)
- 4 Gandalf proprietary SingleLink/MultiLink protocol
- 5 Xylogics proprietary IPX/SLIP
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 28]
-
-RFC 2138 RADIUS April 1997
-
-
-5.8. Framed-IP-Address
-
- Description
-
- This Attribute indicates the address to be configured for the
- user. It MAY be used in Access-Accept packets. It MAY be used in
- an Access-Request packet as a hint by the NAS to the server that
- it would prefer that address, but the server is not required to
- honor the hint.
-
- A summary of the Framed-IP-Address Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 8 for Framed-IP-Address.
-
- Length
-
- 6
-
- Address
-
- The Address field is four octets. The value 0xFFFFFFFF indicates
- that the NAS should allow the user to select an address (e.g.
- Negotiated). The value 0xFFFFFFFE indicates that the NAS should
- select an address for the user (e.g. Assigned from a pool of
- addresses kept by the NAS). Other valid values indicate that the
- NAS should use that value as the user's IP address.
-
-5.9. Framed-IP-Netmask
-
- Description
-
- This Attribute indicates the IP netmask to be configured for the
- user when the user is a router to a network. It MAY be used in
- Access-Accept packets. It MAY be used in an Access-Request packet
- as a hint by the NAS to the server that it would prefer that
- netmask, but the server is not required to honor the hint.
-
-
-
-
-Rigney, et. al. Standards Track [Page 29]
-
-RFC 2138 RADIUS April 1997
-
-
- A summary of the Framed-IP-Netmask Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 9 for Framed-IP-Netmask.
-
- Length
-
- 6
-
- Address
-
- The Address field is four octets specifying the IP netmask of the
- user.
-
-5.10. Framed-Routing
-
- Description
-
- This Attribute indicates the routing method for the user, when the
- user is a router to a network. It is only used in Access-Accept
- packets.
-
- A summary of the Framed-Routing Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 10 for Framed-Routing.
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 30]
-
-RFC 2138 RADIUS April 1997
-
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 0 None
- 1 Send routing packets
- 2 Listen for routing packets
- 3 Send and Listen
-
-5.11. Filter-Id
-
- Description
-
- This Attribute indicates the name of the filter list for this
- user. Zero or more Filter-Id attributes MAY be sent in an
- Access-Accept packet.
-
- Identifying a filter list by name allows the filter to be used on
- different NASes without regard to filter-list implementation
- details.
-
- A summary of the Filter-Id Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 11 for Filter-Id.
-
- Length
-
- >= 3
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 31]
-
-RFC 2138 RADIUS April 1997
-
-
- String
-
- The String field is one or more octets, and its contents are
- implementation dependent. It is intended to be human readable and
- MUST NOT affect operation of the protocol. It is recommended that
- the message contain displayable ASCII characters from the range 32
- through 126 decimal.
-
-5.12. Framed-MTU
-
- Description
-
- This Attribute indicates the Maximum Transmission Unit to be
- configured for the user, when it is not negotiated by some other
- means (such as PPP). It is only used in Access-Accept packets.
-
- A summary of the Framed-MTU Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 12 for Framed-MTU.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. Despite the size of the field,
- values range from 64 to 65535.
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 32]
-
-RFC 2138 RADIUS April 1997
-
-
-5.13. Framed-Compression
-
- Description
-
- This Attribute indicates a compression protocol to be used for the
- link. It MAY be used in Access-Accept packets. It MAY be used in
- an Access-Request packet as a hint to the server that the NAS
- would prefer to use that compression, but the server is not
- required to honor the hint.
-
- More than one compression protocol Attribute MAY be sent. It is
- the responsibility of the NAS to apply the proper compression
- protocol to appropriate link traffic.
-
- A summary of the Framed-Compression Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 13 for Framed-Compression.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 0 None
- 1 VJ TCP/IP header compression [5]
- 2 IPX header compression
-
-5.14. Login-IP-Host
-
- Description
-
- This Attribute indicates the system with which to connect the
- user, when the Login-Service Attribute is included. It MAY be
- used in Access-Accept packets. It MAY be used in an Access-
-
-
-
-Rigney, et. al. Standards Track [Page 33]
-
-RFC 2138 RADIUS April 1997
-
-
- Request packet as a hint to the server that the NAS would prefer
- to use that host, but the server is not required to honor the
- hint.
-
- A summary of the Login-IP-Host Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 14 for Login-IP-Host.
-
- Length
-
- 6
-
- Address
-
- The Address field is four octets. The value 0xFFFFFFFF indicates
- that the NAS SHOULD allow the user to select an address. The
- value 0 indicates that the NAS SHOULD select a host to connect the
- user to. Other values indicate the address the NAS SHOULD connect
- the user to.
-
-5.15. Login-Service
-
- Description
-
- This Attribute indicates the service which should be used to
- connect the user to the login host. It is only used in Access-
- Accept packets.
-
- A summary of the Login-Service Attribute format is shown below. The
- fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 34]
-
-RFC 2138 RADIUS April 1997
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 15 for Login-Service.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 0 Telnet
- 1 Rlogin
- 2 TCP Clear
- 3 PortMaster (proprietary)
- 4 LAT
-
-5.16. Login-TCP-Port
-
- Description
-
- This Attribute indicates the TCP port with which the user is to be
- connected, when the Login-Service Attribute is also present. It
- is only used in Access-Accept packets.
-
- A summary of the Login-TCP-Port Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 16 for Login-TCP-Port.
-
-
-
-Rigney, et. al. Standards Track [Page 35]
-
-RFC 2138 RADIUS April 1997
-
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. Despite the size of the field,
- values range from 0 to 65535.
-
-5.17. (unassigned)
-
- Description
-
- ATTRIBUTE TYPE 17 HAS NOT BEEN ASSIGNED.
-
-5.18. Reply-Message
-
- Description
-
- This Attribute indicates text which MAY be displayed to the user.
-
- When used in an Access-Accept, it is the success message.
-
- When used in an Access-Reject, it is the failure message. It MAY
- indicate a dialog message to prompt the user before another
- Access-Request attempt.
-
- When used in an Access-Challenge, it MAY indicate a dialog message
- to prompt the user for a response.
-
- Multiple Reply-Message's MAY be included and if any are displayed,
- they MUST be displayed in the same order as they appear in the
- packet.
-
- A summary of the Reply-Message Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
- Type
-
- 18 for Reply-Message.
-
-
-
-
-Rigney, et. al. Standards Track [Page 36]
-
-RFC 2138 RADIUS April 1997
-
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, and its contents are
- implementation dependent. It is intended to be human readable,
- and MUST NOT affect operation of the protocol. It is recommended
- that the message contain displayable ASCII characters from the
- range 10, 13, and 32 through 126 decimal. Mechanisms for
- extension to other character sets are beyond the scope of this
- specification.
-
-5.19. Callback-Number
-
- Description
-
- This Attribute indicates a dialing string to be used for callback.
- It MAY be used in Access-Accept packets. It MAY be used in an
- Access-Request packet as a hint to the server that a Callback
- service is desired, but the server is not required to honor the
- hint.
-
- A summary of the Callback-Number Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 19 for Callback-Number.
-
- Length
-
- >= 3
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 37]
-
-RFC 2138 RADIUS April 1997
-
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.20. Callback-Id
-
- Description
-
- This Attribute indicates the name of a place to be called, to be
- interpreted by the NAS. It MAY be used in Access-Accept packets.
-
- A summary of the Callback-Id Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 20 for Callback-Id.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.21. (unassigned)
-
- Description
-
- ATTRIBUTE TYPE 21 HAS NOT BEEN ASSIGNED.
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 38]
-
-RFC 2138 RADIUS April 1997
-
-
-5.22. Framed-Route
-
- Description
-
- This Attribute provides routing information to be configured for
- the user on the NAS. It is used in the Access-Accept packet and
- can appear multiple times.
-
- A summary of the Framed-Route Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 22 for Framed-Route.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, and its contents are
- implementation dependent. It is intended to be human readable and
- MUST NOT affect operation of the protocol. It is recommended that
- the message contain displayable ASCII characters from the range 32
- through 126 decimal.
-
- For IP routes, it SHOULD contain a destination prefix in dotted
- quad form optionally followed by a slash and a decimal length
- specifier stating how many high order bits of the prefix should be
- used. That is followed by a space, a gateway address in dotted
- quad form, a space, and one or more metrics separated by spaces.
- For example, "192.168.1.0/24 192.168.1.1 1 2 -1 3 400". The length
- specifier may be omitted in which case it should default to 8 bits
- for class A prefixes, 16 bits for class B prefixes, and 24 bits
- for class C prefixes. For example, "192.168.1.0 192.168.1.1 1".
-
- Whenever the gateway address is specified as "0.0.0.0" the IP
- address of the user SHOULD be used as the gateway address.
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 39]
-
-RFC 2138 RADIUS April 1997
-
-
-5.23. Framed-IPX-Network
-
- Description
-
- This Attribute indicates the IPX Network number to be configured
- for the user. It is used in Access-Accept packets.
-
- A summary of the Framed-IPX-Network Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 23 for Framed-IPX-Network.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. The value 0xFFFFFFFE indicates
- that the NAS should select an IPX network for the user (e.g.
- assigned from a pool of one or more IPX networks kept by the NAS).
- Other values should be used as the IPX network for the link to the
- user.
-
-5.24. State
-
- Description
-
- This Attribute is available to be sent by the server to the client
- in an Access-Challenge and MUST be sent unmodified from the client
- to the server in the new Access-Request reply to that challenge,
- if any.
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 40]
-
-RFC 2138 RADIUS April 1997
-
-
- This Attribute is available to be sent by the server to the client
- in an Access-Accept that also includes a Termination-Action
- Attribute with the value of RADIUS-Request. If the NAS performs
- the Termination-Action by sending a new Access-Request upon
- termination of the current session, it MUST include the State
- attribute unchanged in that Access-Request.
-
- In either usage, no interpretation by the client should be made.
- A packet may have only one State Attribute. Usage of the State
- Attribute is implementation dependent.
-
- A summary of the State Attribute format is shown below. The fields
- are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 24 for State.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.25. Class
-
- Description
-
- This Attribute is available to be sent by the server to the client
- in an Access-Accept and should be sent unmodified by the client to
- the accounting server as part of the Accounting-Request packet if
- accounting is supported. No interpretation by the client should
- be made.
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 41]
-
-RFC 2138 RADIUS April 1997
-
-
- A summary of the Class Attribute format is shown below. The fields
- are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 25 for Class.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.26. Vendor-Specific
-
- Description
-
- This Attribute is available to allow vendors to support their own
- extended Attributes not suitable for general usage. It MUST not
- affect the operation of the RADIUS protocol.
-
- Servers not equipped to interpret the vendor-specific information
- sent by a client MUST ignore it (although it may be reported).
- Clients which do not receive desired vendor-specific information
- SHOULD make an attempt to operate without it, although they may do
- so (and report they are doing so) in a degraded mode.
-
- A summary of the Vendor-Specific Attribute format is shown below.
- The fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 42]
-
-RFC 2138 RADIUS April 1997
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Vendor-Id
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Vendor-Id (cont) | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 26 for Vendor-Specific.
-
- Length
-
- >= 7
-
- Vendor-Id
-
- The high-order octet is 0 and the low-order 3 octets are the SMI
- Network Management Private Enterprise Code of the Vendor in
- network byte order, as defined in the Assigned Numbers RFC [3].
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
- It SHOULD be encoded as a sequence of vendor type / vendor length
- / value fields, as follows. The Attribute-Specific field is
- dependent on the vendor's definition of that attribute. An
- example encoding of the Vendor-Specific attribute using this
- method follows:
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Vendor-Id
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Vendor-Id (cont) | Vendor type | Vendor length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attribute-Specific...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 43]
-
-RFC 2138 RADIUS April 1997
-
-
-5.27. Session-Timeout
-
- Description
-
- This Attribute sets the maximum number of seconds of service to be
- provided to the user before termination of the session or prompt.
- This Attribute is available to be sent by the server to the client
- in an Access-Accept or Access-Challenge.
-
- A summary of the Session-Timeout Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 27 for Session-Timeout.
-
- Length
-
- 6
-
- Value
-
- The field is 4 octets, containing a 32-bit unsigned integer with
- the maximum number of seconds this user should be allowed to
- remain connected by the NAS.
-
-5.28. Idle-Timeout
-
- Description
-
- This Attribute sets the maximum number of consecutive seconds of
- idle connection allowed to the user before termination of the
- session or prompt. This Attribute is available to be sent by the
- server to the client in an Access-Accept or Access-Challenge.
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 44]
-
-RFC 2138 RADIUS April 1997
-
-
- A summary of the Idle-Timeout Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 28 for Idle-Timeout.
-
- Length
-
- 6
-
- Value
-
- The field is 4 octets, containing a 32-bit unsigned integer with
- the maximum number of consecutive seconds of idle time this user
- should be permitted before being disconnected by the NAS.
-
-5.29. Termination-Action
-
- Description
-
- This Attribute indicates what action the NAS should take when the
- specified service is completed. It is only used in Access-Accept
- packets.
-
- A summary of the Termination-Action Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 29 for Termination-Action.
-
-
-
-
-Rigney, et. al. Standards Track [Page 45]
-
-RFC 2138 RADIUS April 1997
-
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 0 Default
- 1 RADIUS-Request
-
- If the Value is set to RADIUS-Request, upon termination of the
- specified service the NAS MAY send a new Access-Request to the
- RADIUS server, including the State attribute if any.
-
-5.30. Called-Station-Id
-
- Description
-
- This Attribute allows the NAS to send in the Access-Request packet
- the phone number that the user called, using Dialed Number
- Identification (DNIS) or similar technology. Note that this may be
- different from the phone number the call comes in on. It is only
- used in Access-Request packets.
-
- A summary of the Called-Station-Id Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
- Type
-
- 30 for Called-Station-Id.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, containing the phone
- number that the user's call came in on.
-
-
-
-
-Rigney, et. al. Standards Track [Page 46]
-
-RFC 2138 RADIUS April 1997
-
-
- The actual format of the information is site or application
- specific. Printable ASCII is recommended, but a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.31. Calling-Station-Id
-
- Description
-
- This Attribute allows the NAS to send in the Access-Request packet
- the phone number that the call came from, using Automatic Number
- Identification (ANI) or similar technology. It is only used in
- Access-Request packets.
-
- A summary of the Calling-Station-Id Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 31 for Calling-Station-Id.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, containing the phone
- number that the user placed the call from.
-
- The actual format of the information is site or application
- specific. Printable ASCII is recommended, but a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 47]
-
-RFC 2138 RADIUS April 1997
-
-
-5.32. NAS-Identifier
-
- Description
-
- This Attribute contains a string identifying the NAS originating
- the Access-Request. It is only used in Access-Request packets.
- Either NAS-IP-Address or NAS-Identifier SHOULD be present in an
- Access-Request packet.
-
- A summary of the NAS-Identifier Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 32 for NAS-Identifier.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, and should be unique to
- the NAS within the scope of the RADIUS server. For example, a
- fully qualified domain name would be suitable as a NAS-Identifier.
-
- The actual format of the information is site or application
- specific, and a robust implementation SHOULD support the field as
- undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.33. Proxy-State
-
- Description
-
- This Attribute is available to be sent by a proxy server to
- another server when forwarding an Access-Request and MUST be
- returned unmodified in the Access-Accept, Access-Reject or
- Access-Challenge. This attribute should be removed by the proxy
- server before the response is forwarded to the NAS.
-
-
-
-Rigney, et. al. Standards Track [Page 48]
-
-RFC 2138 RADIUS April 1997
-
-
- Usage of the Proxy-State Attribute is implementation dependent. A
- description of its function is outside the scope of this
- specification.
-
- A summary of the Proxy-State Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 33 for Proxy-State.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.34. Login-LAT-Service
-
- Description
-
- This Attribute indicates the system with which the user is to be
- connected by LAT. It MAY be used in Access-Accept packets, but
- only when LAT is specified as the Login-Service. It MAY be used
- in an Access-Request packet as a hint to the server, but the
- server is not required to honor the hint.
-
- Administrators use the service attribute when dealing with
- clustered systems, such as a VAX or Alpha cluster. In such an
- environment several different time sharing hosts share the same
- resources (disks, printers, etc.), and administrators often
- configure each to offer access (service) to each of the shared
- resources. In this case, each host in the cluster advertises its
- services through LAT broadcasts.
-
-
-
-
-Rigney, et. al. Standards Track [Page 49]
-
-RFC 2138 RADIUS April 1997
-
-
- Sophisticated users often know which service providers (machines)
- are faster and tend to use a node name when initiating a LAT
- connection. Alternately, some administrators want particular
- users to use certain machines as a primitive form of load
- balancing (although LAT knows how to do load balancing itself).
-
- A summary of the Login-LAT-Service Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
- Type
-
- 34 for Login-LAT-Service.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, and contains the identity
- of the LAT service to use. The LAT Architecture allows this
- string to contain $ (dollar), - (hyphen), . (period), _
- (underscore), numerics, upper and lower case alphabetics, and the
- ISO Latin-1 character set extension [6]. All LAT string
- comparisons are case insensitive.
-
-5.35. Login-LAT-Node
-
- Description
-
- This Attribute indicates the Node with which the user is to be
- automatically connected by LAT. It MAY be used in Access-Accept
- packets, but only when LAT is specified as the Login-Service. It
- MAY be used in an Access-Request packet as a hint to the server,
- but the server is not required to honor the hint.
-
- A summary of the Login-LAT-Node Attribute format is shown below. The
- fields are transmitted from left to right.
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 50]
-
-RFC 2138 RADIUS April 1997
-
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 35 for Login-LAT-Node.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, and contains the identity
- of the LAT Node to connect the user to. The LAT Architecture
- allows this string to contain $ (dollar), - (hyphen), . (period),
- _ (underscore), numerics, upper and lower case alphabetics, and
- the ISO Latin-1 character set extension. All LAT string
- comparisons are case insensitive.
-
-5.36. Login-LAT-Group
-
- Description
-
- This Attribute contains a string identifying the LAT group codes
- which this user is authorized to use. It MAY be used in Access-
- Accept packets, but only when LAT is specified as the Login-
- Service. It MAY be used in an Access-Request packet as a hint to
- the server, but the server is not required to honor the hint.
-
- LAT supports 256 different group codes, which LAT uses as a form
- of access rights. LAT encodes the group codes as a 256 bit
- bitmap.
-
- Administrators can assign one or more of the group code bits at
- the LAT service provider; it will only accept LAT connections that
- have these group codes set in the bit map. The administrators
- assign a bitmap of authorized group codes to each user; LAT gets
- these from the operating system, and uses these in its requests to
- the service providers.
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 51]
-
-RFC 2138 RADIUS April 1997
-
-
- A summary of the Login-LAT-Group Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 36 for Login-LAT-Group.
-
- Length
-
- 34
-
- String
-
- The String field is a 32 octet bit map, most significant octet
- first. A robust implementation SHOULD support the field as
- undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.37. Framed-AppleTalk-Link
-
- Description
-
- This Attribute indicates the AppleTalk network number which should
- be used for the serial link to the user, which is another
- AppleTalk router. It is only used in Access-Accept packets. It
- is never used when the user is not another router.
-
- A summary of the Framed-AppleTalk-Link Attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 52]
-
-RFC 2138 RADIUS April 1997
-
-
- Type
-
- 37 for Framed-AppleTalk-Link.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. Despite the size of the field,
- values range from 0 to 65535. The special value of 0 indicates
- that this is an unnumbered serial link. A value of 1-65535 means
- that the serial line between the NAS and the user should be
- assigned that value as an AppleTalk network number.
-
-5.38. Framed-AppleTalk-Network
-
- Description
-
- This Attribute indicates the AppleTalk Network number which the
- NAS should probe to allocate an AppleTalk node for the user. It
- is only used in Access-Accept packets. It is never used when the
- user is another router. Multiple instances of this Attribute
- indicate that the NAS may probe using any of the network numbers
- specified.
-
- A summary of the Framed-AppleTalk-Network Attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 38 for Framed-AppleTalk-Network.
-
- Length
-
- 6
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 53]
-
-RFC 2138 RADIUS April 1997
-
-
- Value
-
- The Value field is four octets. Despite the size of the field,
- values range from 0 to 65535. The special value 0 indicates that
- the NAS should assign a network for the user, using its default
- cable range. A value between 1 and 65535 (inclusive) indicates
- the AppleTalk Network the NAS should probe to find an address for
- the user.
-
-5.39. Framed-AppleTalk-Zone
-
- Description
-
- This Attribute indicates the AppleTalk Default Zone to be used for
- this user. It is only used in Access-Accept packets. Multiple
- instances of this attribute in the same packet are not allowed.
-
- A summary of the Framed-AppleTalk-Zone Attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 39 for Framed-AppleTalk-Zone.
-
- Length
-
- >= 3
-
- String
-
- The name of the Default AppleTalk Zone to be used for this user.
- A robust implementation SHOULD support the field as
- undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 54]
-
-RFC 2138 RADIUS April 1997
-
-
-5.40. CHAP-Challenge
-
- Description
-
- This Attribute contains the CHAP Challenge sent by the NAS to a
- PPP Challenge-Handshake Authentication Protocol (CHAP) user. It
- is only used in Access-Request packets.
-
- If the CHAP challenge value is 16 octets long it MAY be placed in
- the Request Authenticator field instead of using this attribute.
-
- A summary of the CHAP-Challenge Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 60 for CHAP-Challenge.
-
- Length
-
- >= 7
-
- String
-
- The String field contains the CHAP Challenge.
-
-5.41. NAS-Port-Type
-
- Description
-
- This Attribute indicates the type of the physical port of the NAS
- which is authenticating the user. It can be used instead of or in
- addition to the NAS-Port (5) attribute. It is only used in
- Access-Request packets. Either NAS-Port (5) or NAS-Port-Type or
- both SHOULD be present in an Access-Request packet, if the NAS
- differentiates among its ports.
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 55]
-
-RFC 2138 RADIUS April 1997
-
-
- A summary of the NAS-Port-Type Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 61 for NAS-Port-Type.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. "Virtual" refers to a connection
- to the NAS via some transport protocol, instead of through a
- physical port. For example, if a user telnetted into a NAS to
- authenticate himself as an Outbound-User, the Access-Request might
- include NAS-Port-Type = Virtual as a hint to the RADIUS server
- that the user was not on a physical port.
-
- 0 Async
- 1 Sync
- 2 ISDN Sync
- 3 ISDN Async V.120
- 4 ISDN Async V.110
- 5 Virtual
-
-5.42. Port-Limit
-
- Description
-
- This Attribute sets the maximum number of ports to be provided to
- the user by the NAS. This Attribute MAY be sent by the server to
- the client in an Access-Accept packet. It is intended for use in
- conjunction with Multilink PPP [7] or similar uses. It MAY also
- be sent by the NAS to the server as a hint that that many ports
- are desired for use, but the server is not required to honor the
- hint.
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 56]
-
-RFC 2138 RADIUS April 1997
-
-
- A summary of the Port-Limit Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 62 for Port-Limit.
-
- Length
-
- 6
-
- Value
-
- The field is 4 octets, containing a 32-bit unsigned integer with
- the maximum number of ports this user should be allowed to connect
- to on the NAS.
-
-5.43. Login-LAT-Port
-
- Description
-
- This Attribute indicates the Port with which the user is to be
- connected by LAT. It MAY be used in Access-Accept packets, but
- only when LAT is specified as the Login-Service. It MAY be used
- in an Access-Request packet as a hint to the server, but the
- server is not required to honor the hint.
-
- A summary of the Login-LAT-Port Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 63 for Login-LAT-Port.
-
-
-
-
-Rigney, et. al. Standards Track [Page 57]
-
-RFC 2138 RADIUS April 1997
-
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, and contains the identity
- of the LAT port to use. The LAT Architecture allows this string
- to contain $ (dollar), - (hyphen), . (period), _ (underscore),
- numerics, upper and lower case alphabetics, and the ISO Latin-1
- character set extension. All LAT string comparisons are case
- insensitive.
-
-5.44. Table of Attributes
-
- The following table provides a guide to which attributes may be found
- in which kinds of packets, and in what quantity.
-
- Request Accept Reject Challenge # Attribute
- 1 0 0 0 1 User-Name
- 0-1 0 0 0 2 User-Password [Note 1]
- 0-1 0 0 0 3 CHAP-Password [Note 1]
- 0-1 0 0 0 4 NAS-IP-Address
- 0-1 0 0 0 5 NAS-Port
- 0-1 0-1 0 0 6 Service-Type
- 0-1 0-1 0 0 7 Framed-Protocol
- 0-1 0-1 0 0 8 Framed-IP-Address
- 0-1 0-1 0 0 9 Framed-IP-Netmask
- 0 0-1 0 0 10 Framed-Routing
- 0 0+ 0 0 11 Filter-Id
- 0 0-1 0 0 12 Framed-MTU
- 0+ 0+ 0 0 13 Framed-Compression
- 0+ 0+ 0 0 14 Login-IP-Host
- 0 0-1 0 0 15 Login-Service
- 0 0-1 0 0 16 Login-TCP-Port
- 0 0+ 0+ 0+ 18 Reply-Message
- 0-1 0-1 0 0 19 Callback-Number
- 0 0-1 0 0 20 Callback-Id
- 0 0+ 0 0 22 Framed-Route
- 0 0-1 0 0 23 Framed-IPX-Network
- 0-1 0-1 0 0-1 24 State
- 0 0+ 0 0 25 Class
- 0+ 0+ 0 0+ 26 Vendor-Specific
- 0 0-1 0 0-1 27 Session-Timeout
- 0 0-1 0 0-1 28 Idle-Timeout
- 0 0-1 0 0 29 Termination-Action
- 0-1 0 0 0 30 Called-Station-Id
- 0-1 0 0 0 31 Calling-Station-Id
-
-
-
-Rigney, et. al. Standards Track [Page 58]
-
-RFC 2138 RADIUS April 1997
-
-
- 0-1 0 0 0 32 NAS-Identifier
- 0+ 0+ 0+ 0+ 33 Proxy-State
- 0-1 0-1 0 0 34 Login-LAT-Service
- 0-1 0-1 0 0 35 Login-LAT-Node
- 0-1 0-1 0 0 36 Login-LAT-Group
- 0 0-1 0 0 37 Framed-AppleTalk-Link
- 0 0+ 0 0 38 Framed-AppleTalk-Network
- 0 0-1 0 0 39 Framed-AppleTalk-Zone
- 0-1 0 0 0 60 CHAP-Challenge
- 0-1 0 0 0 61 NAS-Port-Type
- 0-1 0-1 0 0 62 Port-Limit
- 0-1 0-1 0 0 63 Login-LAT-Port
-
-
- Request Accept Reject Challenge # Attribute
-
-
- [Note 1] An Access-Request MUST contain either a User-Password or a
- CHAP-Password, and MUST NOT contain both.
-
- The following table defines the meaning of the above table entries.
-
- 0 This attribute MUST NOT be present in packet.
- 0+ Zero or more instances of this attribute MAY be present in packet.
- 0-1 Zero or one instance of this attribute MAY be present in packet.
- 1 Exactly one instance of this attribute MUST be present in packet.
-
-6. Examples
-
- A few examples are presented to illustrate the flow of packets and
- use of typical attributes. These examples are not intended to be
- exhaustive, many others are possible.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 59]
-
-RFC 2138 RADIUS April 1997
-
-
-6.1. User Telnet to Specified Host
-
- The NAS at 192.168.1.16 sends an Access-Request UDP packet to the
- RADIUS Server for a user named nemo logging in on port 3.
-
- Code = 1 (Access-Request)
- ID = 0
- Length = 56
- Request Authenticator = {16 octet random number}
- Attributes:
- User-Name = "nemo"
- User-Password = {16 octets of Password padded at end with nulls,
- XORed with MD5(shared secret|Request Authenticator)}
- NAS-IP-Address = 192.168.1.16
- NAS-Port = 3
-
- The RADIUS server authenticates nemo, and sends an Access-Accept UDP
- packet to the NAS telling it to telnet nemo to host 192.168.1.3.
-
- Code = 2 (Access-Accept)
- ID = 0 (same as in Access-Request)
- Length = 38
- Response Authenticator = {16-octet MD-5 checksum of the code (2),
- id (0), Length (38), the Request Authenticator from
- above, the attributes in this reply, and the shared
- secret}
- Attributes:
- Service-Type = Login-User
- Login-Service = Telnet
- Login-Host = 192.168.1.3
-
-6.2. Framed User Authenticating with CHAP
-
- The NAS at 192.168.1.16 sends an Access-Request UDP packet to the
- RADIUS Server for a user named flopsy logging in on port 20 with PPP,
- authenticating using CHAP. The NAS sends along the Service-Type and
- Framed-Protocol attributes as a hint to the RADIUS server that this
- user is looking for PPP, although the NAS is not required to do so.
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 60]
-
-RFC 2138 RADIUS April 1997
-
-
- Code = 1 (Access-Request)
- ID = 1
- Length = 71
- Request Authenticator = {16 octet random number also used as
- CHAP challenge}
- Attributes:
- User-Name = "flopsy"
- CHAP-Password = {1 octet CHAP ID followed by 16 octet
- CHAP response}
- NAS-IP-Address = 192.168.1.16
- NAS-Port = 20
- Service-Type = Framed-User
- Framed-Protocol = PPP
-
- The RADIUS server authenticates flopsy, and sends an Access-Accept
- UDP packet to the NAS telling it to start PPP service and assign an
- address for the user out of its dynamic address pool.
-
- Code = 2 (Access-Accept)
- ID = 1 (same as in Access-Request)
- Length = 56
- Response Authenticator = {16-octet MD-5 checksum of the code (2),
- id (1), Length (56), the Request Authenticator from
- above, the attributes in this reply, and the shared
- secret}
- Attributes:
- Service-Type = Framed-User
- Framed-Protocol = PPP
- Framed-IP-Address = 255.255.255.254
- Framed-Routing = None
- Framed-Compression = 1 (VJ TCP/IP Header Compression)
- Framed-MTU = 1500
-
-6.3. User with Challenge-Response card
-
- The NAS at 192.168.1.16 sends an Access-Request UDP packet to the
- RADIUS Server for a user named mopsy logging in on port 7.
-
- Code = 1 (Access-Request)
- ID = 2
- Length = 57
- Request Authenticator = {16 octet random number}
- Attributes:
- User-Name = "mopsy"
- User-Password = {16 octets of Password padded at end with nulls,
- XORed with MD5(shared secret|Request Authenticator)}
- NAS-IP-Address = 192.168.1.16
- NAS-Port = 7
-
-
-
-Rigney, et. al. Standards Track [Page 61]
-
-RFC 2138 RADIUS April 1997
-
-
- The RADIUS server decides to challenge mopsy, sending back a
- challenge string and looking for a response. The RADIUS server
- therefore and sends an Access-Challenge UDP packet to the NAS.
-
- Code = 11 (Access-Challenge}
- ID = 2 (same as in Access-Request)
- Length = 78
- Response Authenticator = {16-octet MD-5 checksum of the code (11),
- id (2), length (78), the Request Authenticator from
- above, the attributes in this reply, and the shared
- secret}
- Attributes:
- Reply-Message = "Challenge 32769430. Enter response at prompt."
- State = {Magic Cookie to be returned along with user's response;
- in this example 8 octets of data}
-
- The user enters his response, and the NAS send a new Access-Request
- with that response, and includes the State Attribute.
-
- Code = 1 (Access-Request)
- ID = 3 (Note that this changes)
- Length = 67
- Request Authenticator = {NEW 16 octet random number}
- Attributes:
- User-Name = "mopsy"
- User-Password = {16 octets of Response padded at end with
- nulls, XORed with MD5 checksum of shared secret
- plus above Request Authenticator}
- NAS-IP-Address = 192.168.1.16
- NAS-Port = 7
- State = {Magic Cookie from Access-Challenge packet, unchanged}
-
- The Response was incorrect, so the RADIUS server tells the NAS to
- reject the login attempt.
-
- Code = 3 (Access-Reject)
- ID = 3 (same as in Access-Request)
- Length = 20
- Response Authenticator = {16-octet MD-5 checksum of the code (3),
- id (3), length(20), the Request Authenticator from
- above, the attributes in this reply if any, and the
- shared secret}
- Attributes:
- (none, although a Reply-Message could be sent)
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 62]
-
-RFC 2138 RADIUS April 1997
-
-
-Security Considerations
-
- Security issues are the primary topic of this document.
-
- In practice, within or associated with each RADIUS server, there is a
- database which associates "user" names with authentication
- information ("secrets"). It is not anticipated that a particular
- named user would be authenticated by multiple methods. This would
- make the user vulnerable to attacks which negotiate the least secure
- method from among a set. Instead, for each named user there should
- be an indication of exactly one method used to authenticate that user
- name. If a user needs to make use of different authentication
- methods under different circumstances, then distinct user names
- SHOULD be employed, each of which identifies exactly one
- authentication method.
-
- Passwords and other secrets should be stored at the respective ends
- such that access to them is as limited as possible. Ideally, the
- secrets should only be accessible to the process requiring access in
- order to perform the authentication.
-
- The secrets should be distributed with a mechanism that limits the
- number of entities that handle (and thus gain knowledge of) the
- secret. Ideally, no unauthorized person should ever gain knowledge
- of the secrets. It is possible to achieve this with SNMP Security
- Protocols [8], but such a mechanism is outside the scope of this
- specification.
-
- Other distribution methods are currently undergoing research and
- experimentation. The SNMP Security document [8] also has an
- excellent overview of threats to network protocols.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 63]
-
-RFC 2138 RADIUS April 1997
-
-
-References
-
- [1] Rivest, R., and S. Dusse, "The MD5 Message-Digest Algorithm",
- RFC 1321, MIT Laboratory for Computer Science, RSA Data
- Security Inc., April 1992.
-
- [2] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
- USC/Information Sciences Institute, August 1980.
-
- [3] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC
- 1700, USC/Information Sciences Institute, October 1994.
-
- [4] Kaufman, C., Perlman, R., and Speciner, M., "Network Security:
- Private Communications in a Public World", Prentice Hall, March
- 1995, ISBN 0-13-061466-1.
-
- [5] Jacobson, V., "Compressing TCP/IP headers for low-speed serial
- links", RFC 1144, Lawrence Berkeley Laboratory, February 1990.
-
- [6] ISO 8859. International Standard -- Information Processing --
- 8-bit Single-Byte Coded Graphic Character Sets -- Part 1: Latin
- Alphabet No. 1, ISO 8859-1:1987.
- <URL:http://www.iso.ch/cate/d16338.html>
-
- [7] Sklower, K., Lloyd, B., McGregor, G., and Carr, D., "The PPP
- Multilink Protocol (MP)", RFC 1717, University of California
- Berkeley, Lloyd Internetworking, Newbridge Networks
- Corporation, November 1994.
-
- [8] Galvin, J., McCloghrie, K., and Davin, J., "SNMP Security
- Protocols", RFC 1352, Trusted Information Systems, Inc., Hughes
- LAN Systems, Inc., MIT Laboratory for Computer Science, July
- 1992.
-
- [9] Rigney, C., "RADIUS Accounting", RFC 2139, April 1997.
-
-Acknowledgments
-
- RADIUS was originally developed by Livingston Enterprises for their
- PortMaster series of Network Access Servers.
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 64]
-
-RFC 2138 RADIUS April 1997
-
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- Phone: +1 510 426 0770
- EMail: cdr@livingston.com
-
-Authors' Addresses
-
- Questions about this memo can also be directed to:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- Phone: +1 510 426 0770
- EMail: cdr@livingston.com
-
- Allan C. Rubens
- Merit Network, Inc.
- 4251 Plymouth Road
- Ann Arbor, Michigan 48105-2785
-
- EMail: acr@merit.edu
-
- William Allen Simpson
- Daydreamer
- Computer Systems Consulting Services
- 1384 Fontaine
- Madison Heights, Michigan 48071
-
- EMail: wsimpson@greendragon.com
-
- Steve Willens
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- EMail: steve@livingston.com
-
-
-
-
-
-
-Rigney, et. al. Standards Track [Page 65]
-
diff --git a/doc/rfc2139.txt b/doc/rfc2139.txt
deleted file mode 100644
index 88c5af8..0000000
--- a/doc/rfc2139.txt
+++ /dev/null
@@ -1,1403 +0,0 @@
-
-
-
-
-
-
-Network Working Group C. Rigney
-Request for Comments: 2139 Livingston
-Obsoletes: 2059 April 1997
-Category: Informational
-
-
- RADIUS Accounting
-
-Status of this Memo
-
- This memo provides information for the Internet community. This memo
- does not specify an Internet standard of any kind. Distribution of
- this memo is unlimited.
-
-Abstract
-
- This document describes a protocol for carrying accounting
- information between a Network Access Server and a shared Accounting
- Server.
-
-Implementation Note
-
- This memo documents the RADIUS Accounting protocol. There has been
- some confusion in the assignment of port numbers for this protocol.
- The early deployment of RADIUS Accounting was done using the
- erroneously chosen port number 1646, which conflicts with the "sa-
- msg-port" service. The officially assigned port number for RADIUS
- Accounting is 1813.
-
-Table of Contents
-
- 1. Introduction .......................................... 2
- 1.1 Specification of Requirements ................... 3
- 1.2 Terminology ..................................... 3
- 2. Operation ............................................. 4
- 3. Packet Format ......................................... 5
- 4. Packet Types .......................................... 7
- 4.1 Accounting-Request .............................. 7
- 4.2 Accounting-Response ............................. 8
- 5. Attributes ............................................ 10
- 5.1 Acct-Status-Type ................................ 11
- 5.2 Acct-Delay-Time ................................. 12
- 5.3 Acct-Input-Octets ............................... 13
- 5.4 Acct-Output-Octets .............................. 14
- 5.5 Acct-Session-Id ................................. 14
- 5.6 Acct-Authentic .................................. 15
- 5.7 Acct-Session-Time ............................... 16
- 5.8 Acct-Input-Packets .............................. 16
-
-
-
-Rigney Informational [Page 1]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- 5.9 Acct-Output-Packets ............................. 17
- 5.10 Acct-Terminate-Cause ............................ 18
- 5.11 Acct-Multi-Session-Id ........................... 20
- 5.12 Acct-Link-Count ................................. 21
- 5.13 Table of Attributes ............................. 22
- Security Considerations ...................................... 24
- References ................................................... 24
- Acknowledgements ............................................. 24
- Chair's Address .............................................. 24
- Author's Address ............................................. 25
-
-1. Introduction
-
- Managing dispersed serial line and modem pools for large numbers of
- users can create the need for significant administrative support.
- Since modem pools are by definition a link to the outside world, they
- require careful attention to security, authorization and accounting.
- This can be best achieved by managing a single "database" of users,
- which allows for authentication (verifying user name and password) as
- well as configuration information detailing the type of service to
- deliver to the user (for example, SLIP, PPP, telnet, rlogin).
-
- The RADIUS (Remote Authentication Dial In User Service) document [4]
- specifies the RADIUS protocol used for Authentication and
- Authorization. This memo extends the use of the RADIUS protocol to
- cover delivery of accounting information from the Network Access
- Server (NAS) to a RADIUS accounting server.
-
- Key features of RADIUS Accounting are:
-
- Client/Server Model
-
- A Network Access Server (NAS) operates as a client of the
- RADIUS accounting server. The client is responsible for
- passing user accounting information to a designated RADIUS
- accounting server.
-
- The RADIUS accounting server is responsible for receiving the
- accounting request and returning a response to the client
- indicating that it has successfully received the request.
-
- The RADIUS accounting server can act as a proxy client to other
- kinds of accounting servers.
-
-
-
-
-
-
-
-
-Rigney Informational [Page 2]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- Network Security
-
- Transactions between the client and RADIUS accounting server
- are authenticated through the use of a shared secret, which is
- never sent over the network.
-
- Extensible Protocol
-
- All transactions are comprised of variable length Attribute-
- Length-Value 3-tuples. New attribute values can be added
- without disturbing existing implementations of the protocol.
-
-1.1. Specification of Requirements
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized.
-
- MUST This word, or the adjective "required", means that the
- definition is an absolute requirement of the specification.
-
- MUST NOT This phrase means that the definition is an absolute
- prohibition of the specification.
-
- SHOULD This word, or the adjective "recommended", means that there
- may exist valid reasons in particular circumstances to
- ignore this item, but the full implications must be
- understood and carefully weighed before choosing a
- different course.
-
- MAY This word, or the adjective "optional", means that this
- item is one of an allowed set of alternatives. An
- implementation which does not include this option MUST be
- prepared to interoperate with another implementation which
- does include the option.
-
-1.2. Terminology
-
- This document uses the following terms:
-
- service The NAS provides a service to the dial-in user, such as PPP
- or Telnet.
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 3]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- session Each service provided by the NAS to a dial-in user
- constitutes a session, with the beginning of the session
- defined as the point where service is first provided and
- the end of the session defined as the point where service
- is ended. A user may have multiple sessions in parallel or
- series if the NAS supports that, with each session
- generating a separate start and stop accounting record with
- its own Acct-Session-Id.
-
- silently discard
- This means the implementation discards the packet without
- further processing. The implementation SHOULD provide the
- capability of logging the error, including the contents of
- the silently discarded packet, and SHOULD record the event
- in a statistics counter.
-
-2. Operation
-
- When a client is configured to use RADIUS Accounting, at the start of
- service delivery it will generate an Accounting Start packet
- describing the type of service being delivered and the user it is
- being delivered to, and will send that to the RADIUS Accounting
- server, which will send back an acknowledgement that the packet has
- been received. At the end of service delivery the client will
- generate an Accounting Stop packet describing the type of service
- that was delivered and optionally statistics such as elapsed time,
- input and output octets, or input and output packets. It will send
- that to the RADIUS Accounting server, which will send back an
- acknowledgement that the packet has been received.
-
- The Accounting-Request (whether for Start or Stop) is submitted to
- the RADIUS accounting server via the network. It is recommended that
- the client continue attempting to send the Accounting-Request packet
- until it receives an acknowledgement, using some form of backoff. If
- no response is returned within a length of time, the request is re-
- sent a number of times. The client can also forward requests to an
- alternate server or servers in the event that the primary server is
- down or unreachable. An alternate server can be used either after a
- number of tries to the primary server fail, or in a round-robin
- fashion. Retry and fallback algorithms are the topic of current
- research and are not specified in detail in this document.
-
- The RADIUS accounting server MAY make requests of other servers in
- order to satisfy the request, in which case it acts as a client.
-
- If the RADIUS accounting server is unable to successfully record the
- accounting packet it MUST NOT send an Accounting-Response
- acknowledgment to the client.
-
-
-
-Rigney Informational [Page 4]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
-3. Packet Format
-
- Exactly one RADIUS Accounting packet is encapsulated in the UDP Data
- field [1], where the UDP Destination Port field indicates 1813
- (decimal).
-
- When a reply is generated, the source and destination ports are
- reversed.
-
- This memo documents the RADIUS Accounting protocol. There has been
- some confusion in the assignment of port numbers for this protocol.
- The early deployment of RADIUS Accounting was done using the
- erroneously chosen port number 1646, which conflicts with the "sa-
- msg-port" service. The officially assigned port number for RADIUS
- Accounting is 1813.
-
- A summary of the RADIUS data format is shown below. The fields are
- transmitted from left to right.
-
- 0 1 2 3
- 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
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Code | Identifier | Length |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| |
-| Authenticator |
-| |
-| |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Attributes ...
-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
-Code
-
- The Code field is one octet, and identifies the type of RADIUS
- packet. When a packet is received with an invalid Code field, it is
- silently discarded.
-
- RADIUS Accounting Codes (decimal) are assigned as follows:
-
- 4 Accounting-Request
- 5 Accounting-Response
-
-Identifier
-
- The Identifier field is one octet, and aids in matching requests and
- replies.
-
-
-
-Rigney Informational [Page 5]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
-Length
-
- The Length field is two octets. It indicates the length of the
- packet including the Code, Identifier, Length, Authenticator and
- Attribute fields. Octets outside the range of the Length field
- should be treated as padding and should be ignored on reception. If
- the packet is shorter than the Length field indicates, it should be
- silently discarded. The minimum length is 20 and maximum length is
- 4096.
-
-Authenticator
-
- The Authenticator field is sixteen (16) octets. The most significant
- octet is transmitted first. This value is used to authenticate the
- messages between the client and RADIUS accounting server.
-
-Request Authenticator
-
- In Accounting-Request Packets, the Authenticator value is a 16 octet
- MD5 [3] checksum, called the Request Authenticator.
-
- The NAS and RADIUS accounting server share a secret. The Request
- Authenticator field in Accounting-Request packets contains a one- way
- MD5 hash calculated over a stream of octets consisting of the Code +
- Identifier + Length + 16 zero octets + request attributes + shared
- secret (where + indicates concatenation). The 16 octet MD5 hash
- value is stored in the Authenticator field of the Accounting-Request
- packet.
-
- Note that the Request Authenticator of an Accounting-Request can
- not be done the same way as the Request Authenticator of a RADIUS
- Access-Request, because there is no User-Password attribute in an
- Accounting-Request.
-
-Response Authenticator
-
- The Authenticator field in an Accounting-Response packet is called
- the Response Authenticator, and contains a one-way MD5 hash
- calculated over a stream of octets consisting of the Accounting-
- Response Code, Identifier, Length, the Request Authenticator field
- from the Accounting-Request packet being replied to, and the response
- attributes if any, followed by the shared secret. The resulting 16
- octet MD5 hash value is stored in the Authenticator field of the
- Accounting-Response packet.
-
-
-
-
-
-
-
-Rigney Informational [Page 6]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
-Attributes
-
- Attributes may have multiple instances, in such a case the order of
- attributes of the same type SHOULD be preserved. The order of
- attributes of different types is not required to be preserved.
-
-4. Packet Types
-
- The RADIUS packet type is determined by the Code field in the first
- octet of the packet.
-
-4.1. Accounting-Request
-
- Description
-
- Accounting-Request packets are sent from a client (typically a
- Network Access Server or its proxy) to a RADIUS accounting server,
- and convey information used to provide accounting for a service
- provided to a user. The client transmits a RADIUS packet with the
- Code field set to 4 (Accounting-Request).
-
- Upon receipt of an Accounting-Request, the server MUST transmit an
- Accounting-Response reply if it successfully records the
- accounting packet, and MUST NOT transmit any reply if it fails to
- record the accounting packet.
-
- Any attribute valid in a RADIUS Access-Request or Access-Accept
- packet is valid in a RADIUS Accounting-Request packet, except that
- the following attributes MUST NOT be present in an Accounting-
- Request: User-Password, CHAP-Password, Reply-Message, State.
- Either NAS-IP-Address or NAS-Identifier MUST be present in a
- RADIUS Accounting-Request. It SHOULD contain a NAS-Port or NAS-
- Port-Type attribute or both unless the service does not involve a
- port or the NAS does not distinguish among its ports.
-
- A summary of the Accounting-Request packet format is shown below.
- The fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 7]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Request Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 4 for Accounting-Request.
-
- Identifier
-
- The Identifier field MUST be changed whenever the content of the
- Attributes field changes, and whenever a valid reply has been
- received for a previous request. For retransmissions where the
- contents are identical, the Identifier MUST remain unchanged.
-
- Note that if Acct-Delay-Time is included in the attributes of an
- Accounting-Request then the Acct-Delay-Time value will be updated
- when the packet is retransmitted, changing the content of the
- Attributes field and requiring a new Identifier and Request
- Authenticator.
-
- Request Authenticator
-
- The Request Authenticator of an Accounting-Request contains a 16-
- octet MD5 hash value calculated according to the method described
- in "Request Authenticator" above.
-
- Attributes
-
- The Attributes field is variable in length, and contains a list of
- Attributes.
-
-4.2. Accounting-Response
-
- Description
-
- Accounting-Response packets are sent by the RADIUS accounting
- server to the client to acknowledge that the Accounting-Request
- has been received and recorded successfully. If the Accounting-
-
-
-
-Rigney Informational [Page 8]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- Request was recorded successfully then the RADIUS accounting
- server MUST transmit a packet with the Code field set to 5
- (Accounting-Response). On reception of an Accounting-Response by
- the client, the Identifier field is matched with a pending
- Accounting-Request. Invalid packets are silently discarded.
-
- A RADIUS Accounting-Response is not required to have any
- attributes in it.
-
- A summary of the Accounting-Response packet format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Response Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 5 for Accounting-Response.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Accounting-Request which caused this Accounting-Response.
-
- Response Authenticator
-
- The Response Authenticator of an Accounting-Response contains a
- 16-octet MD5 hash value calculated according to the method
- described in "Response Authenticator" above.
-
- Attributes
-
- The Attributes field is variable in length, and contains a list of
- zero or more Attributes.
-
-
-
-
-
-
-
-Rigney Informational [Page 9]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
-5. Attributes
-
- RADIUS Attributes carry the specific authentication, authorization
- and accounting details for the request and response.
-
- Some attributes MAY be included more than once. The effect of this
- is attribute specific, and is specified in each attribute
- description.
-
- The end of the list of attributes is indicated by the Length of the
- RADIUS packet.
-
- A summary of the attribute format is shown below. The fields are
- transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- The Type field is one octet. Up-to-date values of the RADIUS Type
- field are specified in the most recent "Assigned Numbers" RFC [2].
- Values 192-223 are reserved for experimental use, values 224-240
- are reserved for implementation-specific use, and values 241-255
- are reserved and should not be used. This specification concerns
- the following values:
-
- 1-39 (refer to RADIUS document [4])
- 40 Acct-Status-Type
- 41 Acct-Delay-Time
- 42 Acct-Input-Octets
- 43 Acct-Output-Octets
- 44 Acct-Session-Id
- 45 Acct-Authentic
- 46 Acct-Session-Time
- 47 Acct-Input-Packets
- 48 Acct-Output-Packets
- 49 Acct-Terminate-Cause
- 50 Acct-Multi-Session-Id
- 51 Acct-Link-Count
- 60+ (refer to RADIUS document [4])
-
-
-
-
-
-
-
-Rigney Informational [Page 10]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- Length
-
- The Length field is one octet, and indicates the length of this
- attribute including the Type, Length and Value fields. If an
- attribute is received in an Accounting-Request with an invalid
- Length, the entire request should be silently discarded.
-
- Value
-
- The Value field is zero or more octets and contains information
- specific to the attribute. The format and length of the Value
- field is determined by the Type and Length fields.
-
- The format of the value field is one of four data types.
-
- string 0-253 octets
-
- address 32 bit value, most significant octet first.
-
- integer 32 bit value, most significant octet first.
-
- time 32 bit value, most significant octet first -- seconds
- since 00:00:00 GMT, January 1, 1970. The standard
- Attributes do not use this data type but it is presented
- here for possible use within Vendor-Specific attributes.
-
-5.1. Acct-Status-Type
-
- Description
-
- This attribute indicates whether this Accounting-Request marks the
- beginning of the user service (Start) or the end (Stop).
-
- It MAY be used by the client to mark the start of accounting (for
- example, upon booting) by specifying Accounting-On and to mark the
- end of accounting (for example, just before a scheduled reboot) by
- specifying Accounting-Off.
-
- A summary of the Acct-Status-Type attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-Rigney Informational [Page 11]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- Type
-
- 40 for Acct-Status-Type.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 1 Start
- 2 Stop
- 7 Accounting-On
- 8 Accounting-Off
-
-5.2. Acct-Delay-Time
-
- Description
-
- This attribute indicates how many seconds the client has been
- trying to send this record for, and can be subtracted from the
- time of arrival on the server to find the approximate time of the
- event generating this Accounting-Request. (Network transit time
- is ignored.)
-
- Note that changing the Acct-Delay-Time causes the Identifier to
- change; see the discussion under Identifier above.
-
- A summary of the Acct-Delay-Time attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 41 for Acct-Delay-Time.
-
- Length
-
- 6
-
-
-
-Rigney Informational [Page 12]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- Value
-
- The Value field is four octets.
-
-5.3. Acct-Input-Octets
-
- Description
-
- This attribute indicates how many octets have been received from
- the port over the course of this service being provided, and can
- only be present in Accounting-Request records where the Acct-
- Status-Type is set to Stop.
-
- A summary of the Acct-Input-Octets attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 42 for Acct-Input-Octets.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.4. Acct-Output-Octets
-
- Description
-
- This attribute indicates how many octets have been sent to the
- port in the course of delivering this service, and can only be
- present in Accounting-Request records where the Acct-Status-Type
- is set to Stop.
-
- A summary of the Acct-Output-Octets attribute format is shown below.
- The fields are transmitted from left to right.
-
-
-
-
-Rigney Informational [Page 13]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 43 for Acct-Output-Octets.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.5. Acct-Session-Id
-
- Description
-
- This attribute is a unique Accounting ID to make it easy to match
- start and stop records in a log file. The start and stop records
- for a given session MUST have the same Acct-Session-Id. It is
- strongly recommended that the Acct-Session-Id be a printable ASCII
- string.
-
- For example, one implementation uses a string with an 8-digit
- upper case hexadecimal number, the first two digits increment on
- each reboot (wrapping every 256 reboots) and the next 6 digits
- counting from 0 for the first person logging in after a reboot up
- to 2^24-1, about 16 million. Other encodings are possible.
-
- A summary of the Acct-Session-Id attribute format is shown below.
- The fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 14]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 44 for Acct-Session-Id.
-
- Length
-
- >= 3
-
- String
-
- The String field SHOULD be a string of printable ASCII characters.
-
-5.6. Acct-Authentic
-
- Description
-
- This attribute MAY be included in an Accounting-Request to
- indicate how the user was authenticated, whether by RADIUS, the
- NAS itself, or another remote authentication protocol. Users who
- are delivered service without being authenticated SHOULD NOT
- generate Accounting records.
-
- A summary of the Acct-Authentic attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 45 for Acct-Authentic.
-
- Length
-
- 6
-
-
-
-
-
-Rigney Informational [Page 15]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- Value
-
- The Value field is four octets.
-
- 1 RADIUS
- 2 Local
- 3 Remote
-
-5.7. Acct-Session-Time
-
- Description
-
- This attribute indicates how many seconds the user has received
- service for, and can only be present in Accounting-Request records
- where the Acct-Status-Type is set to Stop.
-
- A summary of the Acct-Session-Time attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 46 for Acct-Session-Time.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.8. Acct-Input-Packets
-
- Description
-
- This attribute indicates how many packets have been received from
- the port over the course of this service being provided to a
- Framed User, and can only be present in Accounting-Request records
- where the Acct-Status-Type is set to Stop.
-
-
-
-
-Rigney Informational [Page 16]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- A summary of the Acct-Input-packets attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 47 for Acct-Input-Packets.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.9. Acct-Output-Packets
-
- Description
-
- This attribute indicates how many packets have been sent to the
- port in the course of delivering this service to a Framed User,
- and can only be present in Accounting-Request records where the
- Acct-Status-Type is set to Stop.
-
- A summary of the Acct-Output-Packets attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 48 for Acct-Output-Packets.
-
-
-
-
-
-Rigney Informational [Page 17]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.10. Acct-Terminate-Cause
-
- Description
-
- This attribute indicates how the session was terminated, and can
- only be present in Accounting-Request records where the Acct-
- Status-Type is set to Stop.
-
- A summary of the Acct-Terminate-Cause attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 49 for Acct-Terminate-Cause
-
- Length
-
- 6
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 18]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- Value
-
- The Value field is four octets, containing an integer specifying
- the cause of session termination, as follows:
-
- 1 User Request
- 2 Lost Carrier
- 3 Lost Service
- 4 Idle Timeout
- 5 Session Timeout
- 6 Admin Reset
- 7 Admin Reboot
- 8 Port Error
- 9 NAS Error
- 10 NAS Request
- 11 NAS Reboot
- 12 Port Unneeded
- 13 Port Preempted
- 14 Port Suspended
- 15 Service Unavailable
- 16 Callback
- 17 User Error
- 18 Host Request
-
-
-
- The termination causes are as follows:
-
- User Request User requested termination of service, for
- example with LCP Terminate or by logging out.
-
- Lost Carrier DCD was dropped on the port.
-
- Lost Service Service can no longer be provided; for
- example, user's connection to a host was
- interrupted.
-
- Idle Timeout Idle timer expired.
-
- Session Timeout Maximum session length timer expired.
-
- Admin Reset Administrator reset the port or session.
-
- Admin Reboot Administrator is ending service on the NAS,
- for example prior to rebooting the NAS.
-
- Port Error NAS detected an error on the port which
- required ending the session.
-
-
-
-Rigney Informational [Page 19]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- NAS Error NAS detected some error (other than on the
- port) which required ending the session.
-
- NAS Request NAS ended session for a non-error reason not
- otherwise listed here.
-
- NAS Reboot The NAS ended the session in order to reboot
- non-administratively ("crash").
-
- Port Unneeded NAS ended session because resource usage fell
- below low-water mark (for example, if a
- bandwidth-on-demand algorithm decided that
- the port was no longer needed).
-
- Port Preempted NAS ended session in order to allocate the
- port to a higher priority use.
-
- Port Suspended NAS ended session to suspend a virtual
- session.
-
- Service Unavailable NAS was unable to provide requested service.
-
- Callback NAS is terminating current session in order
- to perform callback for a new session.
-
- User Error Input from user is in error, causing
- termination of session.
-
- Host Request Login Host terminated session normally.
-
-5.11. Acct-Multi-Session-Id
-
- Description
-
- This attribute is a unique Accounting ID to make it easy to link
- together multiple related sessions in a log file. Each session
- linked together would have a unique Acct-Session-Id but the same
- Acct-Multi-Session-Id. It is strongly recommended that the Acct-
- Multi-Session-Id be a printable ASCII string.
-
- A summary of the Acct-Session-Id attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-Rigney Informational [Page 20]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- Type
-
- 50 for Acct-Multi-Session-Id.
-
- Length
-
- >= 3
-
- String
-
- The String field SHOULD be a string of printable ASCII characters.
-
-5.12. Acct-Link-Count
-
- Description
-
- This attribute gives the count of links which are known to have
- been in a given multilink session at the time the accounting
- record is generated. The NAS MAY include the Acct-Link-Count
- attribute in any Accounting-Request which might have multiple
- links.
-
- A summary of the Acct-Link-Count attribute format is show below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 51 for Acct-Link-Count.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets, and contains the number of links
- seen so far in this Multilink Session.
-
-
-
-
-
-
-Rigney Informational [Page 21]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- It may be used to make it easier for an accounting server to know
- when it has all the records for a given Multilink session. When
- the number of Accounting-Requests received with Acct-Status-Type =
- Stop and the same Acct-Multi-Session-Id and unique Acct-Session-
- Id's equals the largest value of Acct-Link-Count seen in those
- Accounting-Requests, all Stop Accounting-Requests for that
- Multilink Session have been received.
-
- An example showing 8 Accounting-Requests should make things
- clearer. For clarity only the relevant attributes are shown, but
- additional attributes containing accounting information will also
- be present in the Accounting-Request.
-
- Multi-Session-Id Session-Id Status-Type Link-Count
- "10" "10" Start 1
- "10" "11" Start 2
- "10" "11" Stop 2
- "10" "12" Start 3
- "10" "13" Start 4
- "10" "12" Stop 4
- "10" "13" Stop 4
- "10" "10" Stop 4
-
-5.13. Table of Attributes
-
- The following table provides a guide to which attributes may be found
- in Accounting-Request packets. No attributes should be found in
- Accounting-Response packets except Proxy-State and possibly Vendor-
- Specific.
-
- # Attribute
- 0-1 User-Name
- 0 User-Password
- 0 CHAP-Password
- 0-1 NAS-IP-Address [5]
- 0-1 NAS-Port
- 0-1 Service-Type
- 0-1 Framed-Protocol
- 0-1 Framed-IP-Address
- 0-1 Framed-IP-Netmask
- 0-1 Framed-Routing
- 0+ Filter-Id
- 0-1 Framed-MTU
- 0+ Framed-Compression
- 0+ Login-IP-Host
- 0-1 Login-Service
- 0-1 Login-TCP-Port
- 0 Reply-Message
-
-
-
-Rigney Informational [Page 22]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
- 0-1 Callback-Number
- 0-1 Callback-Id
- 0+ Framed-Route
- 0-1 Framed-IPX-Network
- 0 State
- 0+ Class
- 0+ Vendor-Specific
- 0-1 Session-Timeout
- 0-1 Idle-Timeout
- 0-1 Termination-Action
- 0-1 Called-Station-Id
- 0-1 Calling-Station-Id
- 0-1 NAS-Identifier [4]
- 0+ Proxy-State
- 0-1 Login-LAT-Service
- 0-1 Login-LAT-Node
- 0-1 Login-LAT-Group
- 0-1 Framed-AppleTalk-Link
- 0-1 Framed-AppleTalk-Network
- 0-1 Framed-AppleTalk-Zone
- 1 Acct-Status-Type
- 0-1 Acct-Delay-Time
- 0-1 Acct-Input-Octets
- 0-1 Acct-Output-Octets
- 1 Acct-Session-Id
- 0-1 Acct-Authentic
- 0-1 Acct-Session-Time
- 0-1 Acct-Input-Packets
- 0-1 Acct-Output-Packets
- 0-1 Acct-Terminate-Cause
- 0+ Acct-Multi-Session-Id
- 0+ Acct-Link-Count
- 0 CHAP-Challenge
- 0-1 NAS-Port-Type
- 0-1 Port-Limit
- 0-1 Login-LAT-Port
-
-
- [5] An Accounting-Request MUST contain either a NAS-IP-Address or a
- NAS-Identifier, and it is permitted (but not recommended) for it to
- contain both.
-
- The following table defines the above table entries.
-
- 0 This attribute MUST NOT be present
- 0+ Zero or more instances of this attribute MAY be present.
- 0-1 Zero or one instance of this attribute MAY be present.
- 1 Exactly one instance of this attribute MUST be present.
-
-
-
-Rigney Informational [Page 23]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
-Security Considerations
-
- Security issues are briefly discussed in sections concerning the
- authenticator included in accounting requests and responses, using a
- shared secret which is never sent over the network.
-
-References
-
- [1] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
- USC/Information Sciences Institute, August 1980.
-
- [2] Reynolds, J., and Postel, J., "Assigned Numbers", STD 2, RFC
- 1700, USC/Information Sciences Institute, October 1994.
-
- [3] Rivest, R., and Dusse, S., "The MD5 Message-Digest Algorithm",
- RFC 1321, MIT Laboratory for Computer Science, RSA Data
- Security Inc., April 1992.
-
- [4] Rigney, C., Rubens, A., Simpson, W., and Willens, S., "Remote
- Authentication Dial In User Service (RADIUS)", RFC 2138,
- April 1997.
-
-Acknowledgments
-
- RADIUS and RADIUS Accounting were originally developed by Livingston
- Enterprises for their PortMaster series of Network Access Servers.
-
-Chair's Address
-
- The RADIUS working group can be contacted via the current chair:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- Phone: +1 510 426 0770
- EMail: cdr@livingston.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 24]
-
-RFC 2139 RADIUS Accounting April 1997
-
-
-Author's Address
-
- Questions about this memo can also be directed to:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- EMail: cdr@livingston.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 25]
-
diff --git a/doc/rfc2284.txt b/doc/rfc2284.txt
deleted file mode 100644
index 9940562..0000000
--- a/doc/rfc2284.txt
+++ /dev/null
@@ -1,843 +0,0 @@
-
-
-
-
-
-
-Network Working Group L. Blunk
-Request for Comments: 2284 J. Vollbrecht
-Category: Standards Track Merit Network, Inc.
- March 1998
-
-
-
-
- PPP Extensible Authentication Protocol (EAP)
-
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (1998). All Rights Reserved.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method for
- transporting multi-protocol datagrams over point-to-point links.
-
- PPP also defines an extensible Link Control Protocol, which allows
- negotiation of an Authentication Protocol for authenticating its peer
- before allowing Network Layer protocols to transmit over the link.
-
- This document defines the PPP Extensible Authentication Protocol.
-
-Table of Contents
-
- 1. Introduction .......................................... 2
- 1.1 Specification of Requirements ................... 2
- 1.2 Terminology ..................................... 2
- 2. PPP Extensible Authentication Protocol (EAP) .......... 3
- 2.1 Configuration Option Format ..................... 4
- 2.2 Packet Format ................................... 6
- 2.2.1 Request and Response ............................ 6
- 2.2.2 Success and Failure ............................. 7
- 3. Initial EAP Request/Response Types .................... 8
- 3.1 Identity ........................................ 9
- 3.2 Notification .................................... 10
- 3.3 Nak ............................................. 10
-
-
-
-Blunk & Vollbrecht Standards Track [Page 1]
-
-RFC 2284 EAP March 1998
-
-
- 3.4 MD5-Challenge ................................... 11
- 3.5 One-Time Password (OTP) ......................... 11
- 3.6 Generic Token Card .............................. 12
- REFERENCES ................................................... 13
- ACKNOWLEDGEMENTS ............................................. 14
- CHAIR'S ADDRESS .............................................. 14
- AUTHORS' ADDRESSES ........................................... 14
- Full Copyright Statement ..................................... 15
-
-1. Introduction
-
- In order to establish communications over a point-to-point link, each
- end of the PPP link must first send LCP packets to configure the data
- link during Link Establishment phase. After the link has been
- established, PPP provides for an optional Authentication phase before
- proceeding to the Network-Layer Protocol phase.
-
- By default, authentication is not mandatory. If authentication of
- the link is desired, an implementation MUST specify the
- Authentication-Protocol Configuration Option during Link
- Establishment phase.
-
- These authentication protocols are intended for use primarily by
- hosts and routers that connect to a PPP network server via switched
- circuits or dial-up lines, but might be applied to dedicated links as
- well. The server can use the identification of the connecting host
- or router in the selection of options for network layer negotiations.
-
- This document defines the PPP Extensible Authentication Protocol
- (EAP). The Link Establishment and Authentication phases, and the
- Authentication-Protocol Configuration Option, are defined in The
- Point-to-Point Protocol (PPP) [1].
-
-1.1. Specification of Requirements
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized. The key
- words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
- "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document
- are to be interpreted as described in RFC 2119 [6].
-
-1.2. Terminology
-
- This document frequently uses the following terms:
-
-
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 2]
-
-RFC 2284 EAP March 1998
-
-
- authenticator
- The end of the link requiring the authentication. The
- authenticator specifies the authentication protocol to be
- used in the Configure-Request during Link Establishment
- phase.
-
- peer
- The other end of the point-to-point link; the end which is
- being authenticated by the authenticator.
-
- silently discard
- This means the implementation discards the packet without
- further processing. The implementation SHOULD provide the
- capability of logging the error, including the contents of
- the silently discarded packet, and SHOULD record the event
- in a statistics counter.
-
- displayable message
- This is interpreted to be a human readable string of
- characters, and MUST NOT affect operation of the protocol.
- The message encoding MUST follow the UTF-8 transformation
- format [5].
-
-2. PPP Extensible Authentication Protocol (EAP)
-
- The PPP Extensible Authentication Protocol (EAP) is a general
- protocol for PPP authentication which supports multiple
- authentication mechanisms. EAP does not select a specific
- authentication mechanism at Link Control Phase, but rather postpones
- this until the Authentication Phase. This allows the authenticator
- to request more information before determining the specific
- authentication mechanism. This also permits the use of a "back-end"
- server which actually implements the various mechanisms while the PPP
- authenticator merely passes through the authentication exchange.
-
- 1. After the Link Establishment phase is complete, the authenticator
- sends one or more Requests to authenticate the peer. The Request
- has a type field to indicate what is being requested. Examples of
- Request types include Identity, MD5-challenge, One-Time
- Passwords, Generic Token Card, etc. The MD5-challenge type
- corresponds closely to the CHAP authentication protocol.
- Typically, the authenticator will send an initial Identity Request
- followed by one or more Requests for authentication information.
- However, an initial Identity Request is not required, and MAY be
- bypassed in cases where the identity is presumed (leased lines,
- dedicated dial-ups, etc.).
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 3]
-
-RFC 2284 EAP March 1998
-
-
- 2. The peer sends a Response packet in reply to each Request. As
- with the Request packet, the Response packet contains a type field
- which corresponds to the type field of the Request.
-
- 3. The authenticator ends the authentication phase with a Success or
- Failure packet.
-
-Advantages
-
- The EAP protocol can support multiple authentication mechanisms
- without having to pre-negotiate a particular one during LCP Phase.
-
- Certain devices (e.g. a NAS) do not necessarily have to understand
- each request type and may be able to simply act as a passthrough
- agent for a "back-end" server on a host. The device only need look
- for the success/failure code to terminate the authentication phase.
-
-Disadvantages
-
- EAP does require the addition of a new authentication type to LCP and
- thus PPP implementations will need to be modified to use it. It also
- strays from the previous PPP authentication model of negotiating a
- specific authentication mechanism during LCP.
-
-2.1. Configuration Option Format
-
- A summary of the Authentication-Protocol Configuration Option format
- to negotiate the EAP Authentication Protocol is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Authentication-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 3
-
- Length
-
- 4
-
- Authentication-Protocol
-
- C227 (Hex) for PPP Extensible Authentication Protocol (EAP)
-
-
-
-Blunk & Vollbrecht Standards Track [Page 4]
-
-RFC 2284 EAP March 1998
-
-
-2.2. Packet Format
-
- Exactly one PPP EAP packet is encapsulated in the Information field
- of a PPP Data Link Layer frame where the protocol field indicates
- type hex C227 (PPP EAP). A summary of the EAP packet format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data ...
- +-+-+-+-+
-
-
- Code
-
- The Code field is one octet and identifies the type of EAP packet.
- EAP Codes are assigned as follows:
-
- 1 Request
- 2 Response
- 3 Success
- 4 Failure
-
- Identifier
-
- The Identifier field is one octet and aids in matching
- responses with requests.
-
- Length
-
- The Length field is two octets and indicates the length of the
- EAP packet including the Code, Identifier, Length and Data
- fields. Octets outside the range of the Length field should
- be treated as Data Link Layer padding and should be ignored on
- reception.
-
- Data
-
- The Data field is zero or more octets. The format of the Data
- field is determined by the Code field.
-
-
-
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 5]
-
-RFC 2284 EAP March 1998
-
-
-2.2.1. Request and Response
-
- Description
-
- The Request packet is sent by the authenticator to the peer. Each
- Request has a type field which serves to indicate what is being
- requested. The authenticator MUST transmit an EAP packet with the
- Code field set to 1 (Request). Additional Request packets MUST be
- sent until a valid Response packet is received, or an optional
- retry counter expires. Retransmitted Requests MUST be sent with
- the same Identifier value in order to distinguish them from new
- Requests. The contents of the data field is dependent on the
- Request type. The peer MUST send a Response packet in reply to a
- Request packet. Responses MUST only be sent in reply to a
- received Request and never retransmitted on a timer. The
- Identifier field of the Response MUST match that of the Request.
-
- Implementation Note: Because the authentication process will
- often involve user input, some care must be taken when deciding
- upon retransmission strategies and authentication timeouts. It
- is suggested a retransmission timer of 6 seconds with a maximum
- of 10 retransmissions be used as default. One may wish to make
- these timeouts longer in certain cases (e.g. where Token Cards
- are involved). Additionally, the peer must be prepared to
- silently discard received retransmissions while waiting for
- user input.
-
- A summary of the Request and Response packet format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Type-Data ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
- Code
-
- 1 for Request;
-
- 2 for Response.
-
-
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 6]
-
-RFC 2284 EAP March 1998
-
-
- Identifier
-
- The Identifier field is one octet. The Identifier field MUST be
- the same if a Request packet is retransmitted due to a timeout
- while waiting for a Response. Any new (non-retransmission)
- Requests MUST modify the Identifier field. If a peer recieves a
- duplicate Request for which it has already sent a Response, it
- MUST resend it's Response. If a peer receives a duplicate Request
- before it has sent a Response to the initial Request (i.e. it's
- waiting for user input), it MUST silently discard the duplicate
- Request.
-
- Length
-
- The Length field is two octets and indicates the length of the EAP
- packet including the Code, Identifier, Length, Type, and Type-Data
- fields. Octets outside the range of the Length field should be
- treated as Data Link Layer padding and should be ignored on
- reception.
-
- Type
-
- The Type field is one octet. This field indicates the Type of
- Request or Response. Only one Type MUST be specified per EAP
- Request or Response. Normally, the Type field of the Response
- will be the same as the Type of the Request. However, there is
- also a Nak Response Type for indicating that a Request type is
- unacceptable to the peer. When sending a Nak in response to a
- Request, the peer MAY indicate an alternative desired
- authentication Type which it supports. An initial specification of
- Types follows in a later section of this document.
-
- Type-Data
-
- The Type-Data field varies with the Type of Request and the
- associated Response.
-
-2.2.2. Success and Failure
-
- Description
-
- The Success packet is sent by the authenticator to the peer to
- acknowledge successful authentication. The authenticator MUST
- transmit an EAP packet with the Code field set to 3 (Success).
-
- If the authenticator cannot authenticate the peer (unacceptable
- Responses to one or more Requests) then the implementation MUST
- transmit an EAP packet with the Code field set to 4 (Failure). An
-
-
-
-Blunk & Vollbrecht Standards Track [Page 7]
-
-RFC 2284 EAP March 1998
-
-
- authenticator MAY wish to issue multiple Requests before sending a
- Failure response in order to allow for human typing mistakes.
-
- Implementation Note: Because the Success and Failure packets
- are not acknowledged, they may be potentially lost. A peer
- MUST allow for this circumstance. The peer can use a Network
- Protocol packet as an alternative indication of Success.
- Likewise, the receipt of a LCP Terminate-Request can be taken
- as a Failure.
-
- A summary of the Success and Failure packet format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Code
-
- 3 for Success;
-
- 4 for Failure.
-
- Identifier
-
- The Identifier field is one octet and aids in matching replies to
- Responses. The Identifier field MUST match the Indentifier field
- of the Response packet that it is sent in response to.
-
- Length
-
- 4
-
-3. Initial EAP Request/Response Types
-
- This section defines the initial set of EAP Types used in
- Request/Response exchanges. More Types may be defined in follow-on
- documents. The Type field is one octet and identifies the structure
- of an EAP Request or Response packet. The first 3 Types are
- considered special case Types. The remaining Types define
- authentication exchanges. The Nak Type is valid only for Response
- packets, it MUST NOT be sent in a Request. The Nak Type MUST only be
-
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 8]
-
-RFC 2284 EAP March 1998
-
-
- sent in repsonse to a Request which uses an authentication Type code.
- All EAP implementatins MUST support Types 1-4. These Types, as well
- as types 5 and 6, are defined in this document. Follow-on RFCs will
- define additional EAP Types.
-
- 1 Identity
- 2 Notification
- 3 Nak (Response only)
- 4 MD5-Challenge
- 5 One-Time Password (OTP) (RFC 1938)
- 6 Generic Token Card
-
-3.1. Identity
-
- Description
-
- The Identity Type is used to query the identity of the peer.
- Generally, the authenticator will issue this as the initial
- Request. An optional displayable message MAY be included to
- prompt the peer in the case where there expectation of interaction
- with a user. A Response MUST be sent to this Request with a Type
- of 1 (Identity).
-
- Implementation Note: The peer MAY obtain the Identity via user
- input. It is suggested that the authenticator retry the
- Indentity Request in the case of an invalid Identity or
- authentication failure to allow for potential typos on the part
- of the user. It is suggested that the Identity Request be
- retried a minimum of 3 times before terminating the
- authentication phase with a Failure reply. The Notification
- Request MAY be used to indicate an invalid authentication
- attempt prior to transmitting a new Identity Request
- (optionally, the failure MAY be indicated within the message of
- the new Identity Request itself).
-
- Type
-
- 1
-
- Type-Data
-
- This field MAY contain a displayable message in the Request. The
- Response uses this field to return the Identity. If the Identity
- is unknown, this field should be zero bytes in length. The field
- MUST NOT be null terminated. The length of this field is derived
- from the Length field of the Request/Response packet and hence a
- null is not required.
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 9]
-
-RFC 2284 EAP March 1998
-
-
-3.2. Notification
-
- Description
-
- The Notification Type is optionally used to convey a displayable
- message from the authenticator to the peer. The peer SHOULD
- display this message to the user or log it if it cannot be
- displayed. It is intended to provide an acknowledged notification
- of some imperative nature. Examples include a password with an
- expiration time that is about to expire, an OTP sequence integer
- which is nearing 0, an authentication failure warning, etc. In
- most circumstances, notification should not be required.
-
- Type
-
- 2
-
- Type-Data
-
- The Type-Data field in the Request contains a displayable message
- greater than zero octets in length. The length of the message is
- determined by Length field of the Request packet. The message
- MUST not be null terminated. A Response MUST be sent in reply to
- the Request with a Type field of 2 (Notification). The Type-Data
- field of the Response is zero octets in length. The Response
- should be sent immediately (independent of how the message is
- displayed or logged).
-
-3.3. Nak
-
- Description
-
- The Nak Type is valid only in Response messages. It is sent in
- reply to a Request where the desired authentication Type is
- unacceptable. Authentication Types are numbered 4 and above.
- The Response contains the authentication Type desired by the peer.
-
- Type
-
- 3
-
- Type-Data
-
- This field MUST contain a single octet indicating the desired
- authentication type.
-
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 10]
-
-RFC 2284 EAP March 1998
-
-
-3.4. MD5-Challenge
-
- Description
-
- The MD5-Challenge Type is analagous to the PPP CHAP protocol [3]
- (with MD5 as the specified algorithm). The PPP Challenge
- Handshake Authentication Protocol RFC [3] should be referred to
- for further implementation specifics. The Request contains a
- "challenge" message to the peer. A Repsonse MUST be sent in reply
- to the Request. The Response MAY be either of Type 4 (MD5-
- Challenge) or Type 3 (Nak). The Nak reply indicates the peer's
- desired authentication mechanism Type. All EAP implementations
- MUST support the MD5-Challenge mechanism.
-
- Type
-
- 4
-
- Type-Data
-
- The contents of the Type-Data field is summarized below. For
- reference on the use of this fields see the PPP Challenge
- Handshake Authentication Protocol [3].
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value-Size | Value ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Name ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-3.5. One-Time Password (OTP)
-
- Description
-
- The One-Time Password system is defined in "A One-Time Password
- System" [4]. The Request contains a displayable message
- containing an OTP challenge. A Repsonse MUST be sent in reply to
- the Request. The Response MUST be of Type 5 (OTP) or Type 3
- (Nak). The Nak reply indicates the peer's desired authentication
- mechanism Type.
-
- Type
-
- 5
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 11]
-
-RFC 2284 EAP March 1998
-
-
- Type-Data
-
- The Type-Data field contains the OTP "challenge" as a displayable
- message in the Request. In the Response, this field is used for
- the 6 words from the OTP dictionary [4]. The messages MUST not be
- null terminated. The length of the field is derived from the
- Length field of the Request/Reply packet.
-
-3.6. Generic Token Card
-
- Description
-
- The Generic Token Card Type is defined for use with various Token
- Card implementations which require user input. The Request
- contains an ASCII text message and the Reply contains the Token
- Card information necessary for authentication. Typically, this
- would be information read by a user from the Token card device and
- entered as ASCII text.
-
- Type
-
- 6
-
- Type-Data
-
- The Type-Data field in the Request contains a displayable message
- greater than zero octets in length. The length of the message is
- determined by Length field of the Request packet. The message
- MUST not be null terminated. A Response MUST be sent in reply to
- the Request with a Type field of 6 (Generic Token Card). The
- Response contains data from the Token Card required for
- authentication. The length is of the data is determined by the
- Length field of the Response packet.
-
-Security Considerations
-
- Security issues are the primary topic of this RFC.
-
- The interaction of the authentication protocols within PPP are highly
- implementation dependent.
-
- For example, upon failure of authentication, some implementations do
- not terminate the link. Instead, the implementation limits the kind
- of traffic in the Network-Layer Protocols to a filtered subset, which
- in turn allows the user opportunity to update secrets or send mail to
- the network administrator indicating a problem.
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 12]
-
-RFC 2284 EAP March 1998
-
-
- There is no provision for retries of failed authentication. However,
- the LCP state machine can renegotiate the authentication protocol at
- any time, thus allowing a new attempt. It is recommended that any
- counters used for authentication failure not be reset until after
- successful authentication, or subsequent termination of the failed
- link.
-
- There is no requirement that authentication be full duplex or that
- the same protocol be used in both directions. It is perfectly
- acceptable for different protocols to be used in each direction.
- This will, of course, depend on the specific protocols negotiated.
-
- In practice, within or associated with each PPP server, it is not
- anticipated that a particular named user would be authenticated by
- multiple methods. This would make the user vulnerable to attacks
- which negotiate the least secure method from among a set (such as PAP
- rather than EAP). Instead, for each named user there should be an
- indication of exactly one method used to authenticate that user name.
- If a user needs to make use of different authentication methods under
- different circumstances, then distinct identities SHOULD be employed,
- each of which identifies exactly one authentication method.
-
-References
-
- [1] Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51,
- RFC 1661, July 1994.
-
- [2] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2,
- RFC 1700, October 1994.
-
- [3] Simpson, W., "PPP Challenge Handshake Authentication Protocol
- (CHAP)", RFC 1994, August 1996.
-
- [4] Haller, N. and C. Metz, "A One-Time Password System", RFC 1938,
- May 1996.
-
- [5] Yergeau, F., "UTF-8, a transformation format of Unicode and ISO
- 10646", RFC 2044, October 1996.
-
- [6] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", RFC 2119, March 1997.
-
-
-
-
-
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 13]
-
-RFC 2284 EAP March 1998
-
-
-Acknowledgments
-
- This protocol derives much of its inspiration from Dave Carrel's AHA
- draft as well as the PPP CHAP protocol [3]. Bill Simpson provided
- much of the boilerplate used throughout this document. Al Rubens
- (Merit) also provided valuable feedback.
-
-Chair's Address
-
- The working group can be contacted via the current chair:
-
- Karl F. Fox
- Ascend Communications, Inc.
- 655 Metro Place South, Suite 370
- Dublin, Ohio 43017
-
- EMail: karl@ascend.com
- Phone: +1 614 760 4041
- Fax: +1 614 760 4050
-
-Authors' Addresses
-
- Larry J. Blunk
- Merit Network, Inc.
- 4251 Plymouth Rd., Suite C
- Ann Arbor, MI 48105
-
- EMail: ljb@merit.edu
- Phone: 734-763-6056
- FAX: 734-647-3185
-
-
- John R. Vollbrecht
- Merit Network, Inc.
- 4251 Plymouth Rd., Suite C
- Ann Arbor, MI 48105
-
- EMail: jrv@merit.edu
- Phone: +1-313-763-1206
- FAX: +1-734-647-3185
-
-
-
-
-
-
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 14]
-
-RFC 2284 EAP March 1998
-
-
-Full Copyright Statement
-
- Copyright (C) The Internet Society (1998). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Blunk & Vollbrecht Standards Track [Page 15]
-
diff --git a/doc/rfc2433.txt b/doc/rfc2433.txt
deleted file mode 100644
index 3536e72..0000000
--- a/doc/rfc2433.txt
+++ /dev/null
@@ -1,1123 +0,0 @@
-
-
-
-
-
-
-Network Working Group G. Zorn
-Request for Comments: 2433 S. Cobb
-Category: Informational Microsoft Corporation
- October 1998
-
-
- Microsoft PPP CHAP Extensions
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (1998). All Rights Reserved.
-
-IESG Note
-
- The protocol described here has significant vulnerabilities. People
- planning on implementing or using this protocol should read section
- 12, "Security Considerations".
-
-1. Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method for
- transporting multi-protocol datagrams over point-to-point links. PPP
- defines an extensible Link Control Protocol and a family of Network
- Control Protocols (NCPs) for establishing and configuring different
- network-layer protocols.
-
- This document describes Microsoft's PPP CHAP dialect (MS-CHAP), which
- extends the user authentication functionality provided on Windows
- networks to remote workstations. MS-CHAP is closely derived from the
- PPP Challenge Handshake Authentication Protocol described in RFC 1994
- [2], which the reader should have at hand.
-
- The algorithms used in the generation of various MS-CHAP protocol
- fields are described in an appendix.
-
-2. Introduction
-
- Microsoft created MS-CHAP to authenticate remote Windows
- workstations, providing the functionality to which LAN-based users
- are accustomed while integrating the encryption and hashing
- algorithms used on Windows networks.
-
-
-
-
-Zorn & Cobb Informational [Page 1]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- Where possible, MS-CHAP is consistent with standard CHAP. Briefly,
- the differences between MS-CHAP and standard CHAP are:
-
- * MS-CHAP is enabled by negotiating CHAP Algorithm 0x80 in LCP
- option 3, Authentication Protocol.
-
- * The MS-CHAP Response packet is in a format designed for
- compatibility with Microsoft's Windows NT 3.5, 3.51 and 4.0, and
- Windows95 networking products. The MS-CHAP format does not
- require the authenticator to store a clear-text or reversibly
- encrypted password.
-
- * MS-CHAP provides authenticator-controlled authentication retry
- and password changing mechanisms.
-
- * MS-CHAP defines a set of reason-for-failure codes returned in
- the Failure packet Message field.
-
-3. Specification of Requirements
-
- In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
- "recommended", "SHOULD", and "SHOULD NOT" are to be interpreted as
- described in [2].
-
-4. LCP Configuration
-
- The LCP configuration for MS-CHAP is identical to that for standard
- CHAP, except that the Algorithm field has value 0x80, rather than the
- MD5 value 0x05. PPP implementations which do not support MS-CHAP,
- but correctly implement LCP Config-Rej, should have no problem
- dealing with this non-standard option.
-
-5. Challenge Packet
-
- The MS-CHAP Challenge packet is identical in format to the standard
- CHAP Challenge packet.
-
- MS-CHAP authenticators send an 8-octet challenge Value field. Peers
- need not duplicate Microsoft's algorithm for selecting the 8-octet
- value, but the standard guidelines on randomness [1,2,7] SHOULD be
- observed.
-
- Microsoft authenticators do not currently provide information in the
- Name field. This may change in the future.
-
-
-
-
-
-
-
-Zorn & Cobb Informational [Page 2]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
-6. Response Packet
-
- The MS-CHAP Response packet is identical in format to the standard
- CHAP Response packet. However, the Value field is sub-formatted
- differently as follows:
-
- 24 octets: LAN Manager compatible challenge response
- 24 octets: Windows NT compatible challenge response
- 1 octet : "Use Windows NT compatible challenge response" flag
-
- The LAN Manager compatible challenge response is an encoded function
- of the password and the received challenge as output by the routine
- LmChallengeResponse() (see section A.1, below). LAN Manager
- passwords are limited to 14 case-insensitive OEM characters. Note
- that use of the LAN Manager compatible challenge response has been
- deprecated; peers SHOULD NOT generate it, and the sub-field SHOULD be
- zero-filled. The algorithm used in the generation of the LAN Manager
- compatible challenge response is described here for informational
- purposes only.
-
- The Windows NT compatible challenge response is an encoded function
- of the password and the received challenge as output by the routine
- NTChallengeResponse() (see section A.5, below). The Windows NT
- password is a string of 0 to (theoretically) 256 case-sensitive
- Unicode [8] characters. Current versions of Windows NT limit
- passwords to 14 characters, mainly for compatibility reasons; this
- may change in the future.
-
- The "use Windows NT compatible challenge response" flag, if 1,
- indicates that the Windows NT response is provided and should be used
- in preference to the LAN Manager response. The LAN Manager response
- will still be used if the account does not have a Windows NT password
- hash, e.g. if the password has not been changed since the account
- was uploaded from a LAN Manager 2.x account database. If the flag is
- 0, the Windows NT response is ignored and the LAN Manager response is
- used. Since the use of LAN Manager authentication has been
- deprecated, this flag SHOULD always be set (1) and the LAN Manager
- compatible challenge response field SHOULD be zero-filled.
-
- The Name field identifies the peer's user account name. The Windows
- NT domain name may prefix the user's account name (e.g.
- "BIGCO\johndoe" where "BIGCO" is a Windows NT domain containing the
- user account "john-doe"). If a domain is not provided, the backslash
- should also be omitted, (e.g. "johndoe").
-
-
-
-
-
-
-
-Zorn & Cobb Informational [Page 3]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
-7. Success Packet
-
- The Success packet is identical in format to the standard CHAP
- Success packet.
-
-8. Failure Packet
-
- The Failure packet is identical in format to the standard CHAP
- Failure packet. There is, however, formatted text stored in the
- Message field which, contrary to the standard CHAP rules, affects the
- protocol. The Message field format is:
-
- "E=eeeeeeeeee R=r C=cccccccccccccccc V=vvvvvvvvvv"
-
- where
-
- The "eeeeeeeeee" is the decimal error code (need not be 10
- digits) corresponding to one of those listed below, though
- implementations should deal with codes not on this list
- gracefully.
-
- 646 ERROR_RESTRICTED_LOGON_HOURS
- 647 ERROR_ACCT_DISABLED
- 648 ERROR_PASSWD_EXPIRED
- 649 ERROR_NO_DIALIN_PERMISSION
- 691 ERROR_AUTHENTICATION_FAILURE
- 709 ERROR_CHANGING_PASSWORD
-
- The "r" is a flag set to "1" if a retry is allowed, and "0" if
- not. When the authenticator sets this flag to "1" it disables
- short timeouts, expecting the peer to prompt the user for new
- credentials and resubmit the response.
-
- The "cccccccccccccccc" is 16 hexadecimal digits representing an
- ASCII representation of a new challenge value. This field is
- optional. If it is not sent, the authenticator expects the
- resubmitted response to be calculated based on the previous
- challenge value plus decimal 23 in the first octet, i.e. the
- one immediately following the Value Size field. Windows 95
- authenticators may send this field. Windows NT authenticators
- do not, but may in the future. Both systems implement peer
- support of this field.
-
- The "vvvvvvvvvv" is the decimal version code (need not be 10
- digits) indicating the MS-CHAP protocol version supported on
- the server. Currently, this is interesting only in selecting a
- Change Password packet type. If the field is not present the
- version should be assumed to be 1; since use of the version 1
-
-
-
-Zorn & Cobb Informational [Page 4]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- Change Password packet has been deprecated, this field SHOULD
- always contain a value greater than or equal to 2.
-
- Implementations should accept but ignore additional text they do not
- recognize.
-
-9. Change Password Packet (version 1)
-
- The version 1 Change Password packet does not appear in standard
- CHAP. It allows the peer to change the password on the account
- specified in the previous Response packet. The version 1 Change
- Password packet should be sent only if the authenticator reports
- ERROR_PASSWD_EXPIRED (E=648) and V is either missing or equal to one
- in the Message field of the Failure packet.
-
- The use of the Change Password Packet (version 1) has been
- deprecated; the format of the packet is described here for
- informational purposes, but peers SHOULD NOT transmit it.
-
- The format of this packet is as follows:
-
- 1 octet : Code (=5)
- 1 octet : Identifier
- 2 octets: Length (=72)
- 16 octets: Encrypted LAN Manager Old password Hash
- 16 octets: Encrypted LAN Manager New Password Hash
- 16 octets: Encrypted Windows NT Old Password Hash
- 16 octets: Encrypted Windows NT New Password Hash
- 2 octets: Password Length
- 2 octets: Flags
-
- Code
- 5
-
- Identifier
- The Identifier field is one octet and aids in matching requests
- and replies. The value is the Identifier of the received
- Failure packet to which this packet responds plus 1.
-
- Length
- 72
-
- Encrypted LAN Manager New Password Hash
- Encrypted LAN Manager Old Password Hash
- These fields contain the LAN Manager password hash of the new
- and old passwords encrypted with the last received challenge
- value, as output by the routine LmEncryptedPasswordHash() (see
- section A.8, below).
-
-
-
-Zorn & Cobb Informational [Page 5]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- Encrypted Windows NT New Password Hash
- Encrypted Windows NT Old Password Hash
- These fields contain the Windows NT password hash of the new
- and old passwords encrypted with the last received challenge
- value, as output by the pseudo-code routine
- NtEncryptedPasswordHash() (see section A.10, below).
-
- Password Length
- The length in octets of the LAN Manager compatible form of the
- new password. If this value is greater than or equal to zero
- and less than or equal to 14 it is assumed that the encrypted
- LAN Manager password hash fields are valid. Otherwise, it is
- assumed these fields are not valid, in which case the Windows
- NT compatible passwords MUST be provided.
-
- Flags
- This field is two octets in length. It is a bit field of
- option flags where 0 is the least significant bit of the 16-bit
- quantity:
-
- Bit 0
- If this bit is set (1), it indicates that the encrypted
- Windows NT hashed passwords are valid and should be used.
- If this bit is cleared (0), the Windows NT fields are not
- used and the LAN Manager fields must be provided.
-
- Bits 1-15
- Reserved, always clear (0).
-
-10. Change Password Packet (version 2)
-
- The version 2 Change Password packet does not appear in standard
- CHAP. It allows the peer to change the password on the account
- specified in the preceding Response packet. The version 2 Change
- Password packet should be sent only if the authenticator reports
- ERROR_PASSWD_EXPIRED (E=648) and a version of 2 or greater in the
- Message field of the Failure packet.
-
- This packet type is supported by Windows NT 3.51, 4.0 and recent
- versions of Windows 95. It is not supported by Windows NT 3.5 or
- early versions of Windows 95.
-
- The format of this packet is as follows:
-
- 1 octet : Code
- 1 octet : Identifier
- 2 octets : Length
- 516 octets : Password Encrypted with Old NT Hash
-
-
-
-Zorn & Cobb Informational [Page 6]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- 16 octets : Old NT Hash Encrypted with New NT Hash
- 516 octets : Password Encrypted with Old LM Hash
- 16 octets : Old LM Hash Encrypted With New NT Hash
- 24 octets : LAN Manager compatible challenge response
- 24 octets : Windows NT compatible challenge response
- 2-octet : Flags
-
- Code
- 6
-
- Identifier
- The Identifier field is one octet and aids in matching requests
- and replies. The value is the Identifier of the received
- Failure packet to which this packet responds plus 1.
-
- Length
- 1118
-
- Password Encrypted with Old NT Hash
- This field contains the PWBLOCK form of the new Windows NT
- password encrypted with the old Windows NT password hash, as
- output by the NewPasswordEncryptedWithOldNtPasswordHash()
- routine (see section A.11, below).
-
- Old NT Hash Encrypted with New NT Hash
- This field contains the old Windows NT password hash encrypted
- with the new Windows NT password hash, as output by the
- OldNtPasswordHashEncryptedWithNewNtPasswordHash() routine (see
- section A.14, below).
-
- Password Encrypted with Old LM Hash
- This field contains the PWBLOCK form of the new Windows NT
- password encrypted with the old LAN Manager password hash, as
- output by the NewPasswordEncryptedWithOldLmPasswordHash()
- routine described in section A.15, below. Note, however, that
- the use of this field has been deprecated: peers SHOULD NOT
- generate it, and this field SHOULD be zero-filled.
-
- Old LM Hash Encrypted With New NT Hash
- This field contains the old LAN Manager password hash encrypted
- with the new Windows NT password hash, as output by the
- OldLmPasswordHashEncryptedWithNewNtPasswordHash() routine (see
- section A.16, below). Note, however, that the use of this
- field has been deprecated: peers SHOULD NOT generate it, and
- this field SHOULD be zero-filled.
-
-
-
-
-
-
-Zorn & Cobb Informational [Page 7]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- LAN Manager compatible challenge response
- Windows NT compatible challenge response
- The challenge response field (as described in the Response
- packet description), but calculated on the new password and the
- same challenge used in the last response. Note that use of the
- LAN Manager compatible challenge response has been deprecated;
- peers SHOULD NOT generate it, and the field SHOULD be zero-
- filled.
-
- Flags
- This field is two octets in length. It is a bit field of
- option flags where 0 is the least significant bit of the 16-bit
- quantity. The format of this field is illustrated in the
- following diagram:
-
- 1
- 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Bit 0
- The "use Windows NT compatible challenge response" flag
- as described in the Response packet.
-
- Bit 1
- Set (1) indicates that the "Password Encrypted with Old
- LM Hash" and "Old LM Hash Encrypted With New NT Hash"
- fields are valid and should be used. Clear (0) indicates
- these fields are not valid. This bit SHOULD always be
- clear (0).
-
- Bits 2-15
- Reserved, always clear (0).
-
-11. Security Considerations
-
- As an implementation detail, the authenticator SHOULD limit the
- number of password retries allowed to make brute-force password
- guessing attacks more difficult.
-
- Because the challenge value is encrypted using the password hash to
- form the response and the challenge is transmitted in clear-text
- form, both passive known-plaintext and active chosen-plaintext
- attacks against the password hash are possible. Suitable precautions
- (i.e., frequent password changes) SHOULD be taken in environments
- where eavesdropping is likely.
-
-
-
-
-Zorn & Cobb Informational [Page 8]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- The Change Password (version 1) packet is vulnerable to a passive
- eavesdropping attack which can easily reveal the new password hash.
- For this reason, it MUST NOT be sent if eavesdropping is possible.
-
-12. References
-
- [1] Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51, RFC
- 1661, July 1994.
-
- [2] Simpson, W., "PPP Challenge Handshake Authentication Protocol
- (CHAP)", RFC 1994, August 1996.
-
- [3] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
- [4] "Data Encryption Standard (DES)", Federal Information Processing
- Standard Publication 46-2, National Institute of Standards and
- Technology, December 1993.
-
- [5] Rivest, R., "MD4 Message Digest Algorithm", RFC 1320, April 1992.
-
- [6] RC4 is a proprietary encryption algorithm available under license
- from RSA Data Security Inc. For licensing information, contact:
- RSA Data Security, Inc.
- 100 Marine Parkway
- Redwood City, CA 94065-1031
-
- [7] Eastlake, D., Crocker, S., and J. Schiller, "Randomness
- Recomnendations for Security", RFC 1750, December 1994.
-
- [8] "The Unicode Standard, Version 2.0", The Unicode Consortium,
- Addison-Wesley, 1996. ISBN 0-201-48345-9.
-
- [9] "DES Modes of Operation", Federal Information Processing
- Standards Publication 81, National Institute of Standards and
- Technology, December 1980
-
-13. Acknowledgements
-
- Thanks (in no particular order) to Jeff Haag (Jeff_Haag@3com.com),
- Bill Palter (palter@network-alchemy.com), Bruce Johnson
- (bjohnson@microsoft.com), Tony Bell (tonybe@microsoft.com), Benoit
- Martin (ehlija@vircom.com), and Joe Davies (josephd@microsoft.com)
- for useful suggestions and feedback.
-
-
-
-
-
-
-
-Zorn & Cobb Informational [Page 9]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
-14. Chair's Address
-
- The PPP Extensions Working Group can be contacted via the current
- chair:
-
- Karl Fox
- Ascend Communications
- 3518 Riverside Drive
- Suite 101
- Columbus, OH 43221
-
- Phone: +1 614 326 6841
- EMail: karl@ascend.com
-
-15. Authors' Addresses
-
- Questions about this memo can also be directed to:
-
- Glen Zorn
- Microsoft Corporation
- One Microsoft Way
- Redmond, Washington 98052
-
- Phone: +1 425 703 1559
- Fax: +1 425 936 7329
- EMail: glennz@microsoft.com
-
-
- Steve Cobb
- Microsoft Corporation
- One Microsoft Way
- Redmond, Washington 98052
-
- EMail: stevec@microsoft.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn & Cobb Informational [Page 10]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
-Appendix A - Pseudocode
-
- The routines mentioned in the text are described in pseudocode below.
-
-A.1 LmChallengeResponse()
-
- LmChallengeResponse(
- IN 8-octet Challenge,
- IN 0-to-14-oem-char Password,
- OUT 24-octet Response )
- {
- LmPasswordHash( Password, giving PasswordHash )
- ChallengeResponse( Challenge, PasswordHash, giving Response )
- }
-
-
-A.2 LmPasswordHash()
-
- LmPasswordHash(
- IN 0-to-14-oem-char Password,
- OUT 16-octet PasswordHash )
- {
- Set UcasePassword to the uppercased Password
- Zero pad UcasePassword to 14 characters
-
- DesHash( 1st 7-octets of UcasePassword,
- giving 1st 8-octets of PasswordHash )
-
- DesHash( 2nd 7-octets of UcasePassword,
- giving 2nd 8-octets of PasswordHash )
- }
-
-
-A.3 DesHash()
-
- DesHash(
- IN 7-octet Clear,
- OUT 8-octet Cypher )
- {
- /*
- * Make Cypher an irreversibly encrypted form of Clear by
- * encrypting known text using Clear as the secret key.
- * The known text consists of the string
- *
- * KGS!@#$%
- */
-
- Set StdText to "KGS!@#$%"
-
-
-
-Zorn & Cobb Informational [Page 11]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- DesEncrypt( StdText, Clear, giving Cypher )
- }
-
-
-A.4 DesEncrypt()
-
- DesEncrypt(
- IN 8-octet Clear,
- IN 7-octet Key,
- OUT 8-octet Cypher )
- {
- /*
- * Use the DES encryption algorithm [4] in ECB mode [9]
- * to encrypt Clear into Cypher such that Cypher can
- * only be decrypted back to Clear by providing Key.
- * Note that the DES algorithm takes as input a 64-bit
- * stream where the 8th, 16th, 24th, etc. bits are
- * parity bits ignored by the encrypting algorithm.
- * Unless you write your own DES to accept 56-bit input
- * without parity, you will need to insert the parity bits
- * yourself.
- */
- }
-
-
-A.5 NtChallengeResponse()
-
- NtChallengeResponse(
- IN 8-octet Challenge,
- IN 0-to-256-unicode-char Password,
- OUT 24-octet Response )
- {
- NtPasswordHash( Password, giving PasswordHash )
- ChallengeResponse( Challenge, PasswordHash, giving Response )
- }
-
-
-A.6 NtPasswordHash()
-
- NtPasswordHash(
- IN 0-to-256-unicode-char Password,
- OUT 16-octet PasswordHash )
- {
- /*
- * Use the MD4 algorithm [5] to irreversibly hash Password
- * into PasswordHash. Only the password is hashed without
- * including any terminating 0.
- */
-
-
-
-Zorn & Cobb Informational [Page 12]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- }
-
-
-A.7 ChallengeResponse()
-
- ChallengeResponse(
- IN 8-octet Challenge,
- IN 16-octet PasswordHash,
- OUT 24-octet Response )
- {
- Set ZPasswordHash to PasswordHash zero-padded to 21 octets
-
- DesEncrypt( Challenge,
- 1st 7-octets of ZPasswordHash,
- giving 1st 8-octets of Response )
-
- DesEncrypt( Challenge,
- 2nd 7-octets of ZPasswordHash,
- giving 2nd 8-octets of Response )
-
- DesEncrypt( Challenge,
- 3rd 7-octets of ZPasswordHash,
- giving 3rd 8-octets of Response )
- }
-
-
-A.8 LmEncryptedPasswordHash()
-
- LmEncryptedPasswordHash(
- IN 0-to-14-oem-char Password,
- IN 8-octet KeyValue,
- OUT 16-octet Cypher )
- {
- LmPasswordHash( Password, giving PasswordHash )
-
- PasswordHashEncryptedWithBlock( PasswordHash,
- KeyValue,
- giving Cypher )
- }
-
-
-A.9 PasswordHashEncryptedWithBlock()
-
- PasswordHashEncryptedWithBlock(
- IN 16-octet PasswordHash,
- IN 8-octet Block,
- OUT 16-octet Cypher )
- {
-
-
-
-Zorn & Cobb Informational [Page 13]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- DesEncrypt( 1st 8-octets PasswordHash,
- 1st 7-octets Block,
- giving 1st 8-octets Cypher )
-
- DesEncrypt( 2nd 8-octets PasswordHash,
- 1st 7-octets Block,
- giving 2nd 8-octets Cypher )
- }
-
-
-A.10 NtEncryptedPasswordHash()
-
- NtEncryptedPasswordHash( IN 0-to-14-oem-char Password IN 8-octet
- Challenge OUT 16-octet Cypher ) {
- NtPasswordHash( Password, giving PasswordHash )
-
- PasswordHashEncryptedWithBlock( PasswordHash,
- Challenge,
- giving Cypher )
- }
-
-
-A.11 NewPasswordEncryptedWithOldNtPasswordHash()
-
- datatype-PWBLOCK
- {
- 256-unicode-char Password
- 4-octets PasswordLength
- }
-
- NewPasswordEncryptedWithOldNtPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT datatype-PWBLOCK EncryptedPwBlock )
- {
- NtPasswordHash( OldPassword, giving PasswordHash )
-
- EncryptPwBlockWithPasswordHash( NewPassword,
- PasswordHash,
- giving EncryptedPwBlock )
- }
-
-
-A.12 EncryptPwBlockWithPasswordHash()
-
- EncryptPwBlockWithPasswordHash(
- IN 0-to-256-unicode-char Password,
- IN 16-octet PasswordHash,
-
-
-
-Zorn & Cobb Informational [Page 14]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- OUT datatype-PWBLOCK PwBlock )
- {
-
- Fill ClearPwBlock with random octet values
- PwSize = lstrlenW( Password ) * sizeof( unicode-char )
- PwOffset = sizeof( ClearPwBlock.Password ) - PwSize
- Move PwSize octets to (ClearPwBlock.Password + PwOffset ) from Password
- ClearPwBlock.PasswordLength = PwSize
- Rc4Encrypt( ClearPwBlock,
- sizeof( ClearPwBlock ),
- PasswordHash,
- sizeof( PasswordHash ),
- giving PwBlock )
- }
-
-
-A.13 Rc4Encrypt()
-
- Rc4Encrypt(
- IN x-octet Clear,
- IN integer ClearLength,
- IN y-octet Key,
- IN integer KeyLength,
- OUT x-octet Cypher )
- {
- /*
- * Use the RC4 encryption algorithm [6] to encrypt Clear of
- * length ClearLength octets into a Cypher of the same length
- * such that the Cypher can only be decrypted back to Clear
- * by providing a Key of length KeyLength octets.
- */
- }
-
-
-A.14 OldNtPasswordHashEncryptedWithNewNtPasswordHash()
-
- OldNtPasswordHashEncryptedWithNewNtPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT 16-octet EncryptedPasswordHash )
- {
- NtPasswordHash( OldPassword, giving OldPasswordHash )
- NtPasswordHash( NewPassword, giving NewPasswordHash )
- NtPasswordHashEncryptedWithBlock( OldPasswordHash,
- NewPasswordHash,
- giving EncryptedPasswordHash )
- }
-
-
-
-
-Zorn & Cobb Informational [Page 15]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
-A.15 NewPasswordEncryptedWithOldLmPasswordHash()
-
- NewPasswordEncryptedWithOldLmPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT datatype-PWBLOCK EncryptedPwBlock )
- {
- LmPasswordHash( OldPassword, giving PasswordHash )
-
- EncryptPwBlockWithPasswordHash( NewPassword, PasswordHash,
- giving EncryptedPwBlock )
- }
-
-
-A.16 OldLmPasswordHashEncryptedWithNewNtPasswordHash()
-
- OldLmPasswordHashEncryptedWithNewNtPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT 16-octet EncryptedPasswordHash )
- {
- LmPasswordHash( OldPassword, giving OldPasswordHash )
-
- NtPasswordHash( NewPassword, giving NewPasswordHash )
-
- NtPasswordHashEncryptedWithBlock( OldPasswordHash, NewPasswordHash,
- giving EncrytptedPasswordHash )
- }
-
-
-A.17 NtPasswordHashEncryptedWithBlock()
-
- NtPasswordHashEncryptedWithBlock(
- IN 16-octet PasswordHash,
- IN 16-octet Block,
- OUT 16-octet Cypher )
- {
- DesEncrypt( 1st 8-octets PasswordHash,
- 1st 7-octets Block,
- giving 1st 8-octets Cypher )
-
- DesEncrypt( 2nd 8-octets PasswordHash,
- 2nd 7-octets Block,
- giving 2nd 8-octets Cypher )
- }
-
-
-
-
-
-
-Zorn & Cobb Informational [Page 16]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
-Appendix B - Examples
-
-B.1 Negotiation Examples
-
- Here are some examples of typical negotiations. The peer is on the
- left and the authenticator is on the right.
-
- The packet sequence ID is incremented on each authentication retry
- Response and on the change password response. All cases where the
- packet sequence ID is updated are noted below.
-
- Response retry is never allowed after Change Password. Change
- Password may occur after Response retry. The implied challenge form
- is shown in the examples, though all cases of "first challenge+23"
- should be replaced by the "C=cccccccccccccccc" challenge if
- authenticator supplies it in the Failure packet.
-
-B.1.1 Successful authentication
-
- <- Challenge
- Response ->
- <- Success
-
-
-B.1.2 Failed authentication with no retry allowed
-
- <- Challenge
- Response ->
- <- Failure (E=691 R=0)
-
-
-B.1.3 Successful authentication after retry
-
- <- Challenge
- Response ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to first challenge+23 ->
- <- Success
-
-
-B.1.4 Failed hack attack with 3 attempts allowed
-
- <- Challenge
- Response ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to first challenge+23 ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to first challenge+23+23 ->
-
-
-
-Zorn & Cobb Informational [Page 17]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
- <- Failure (E=691 R=0)
-
-
-B.1.5 Successful authentication with password change
-
- <- Challenge
- Response ->
- <- Failure (E=648 R=0 V=2), disable short timeout
- ChangePassword (++ID) to first challenge ->
- <- Success
-
-
-B.1.6 Successful authentication with retry and password change
-
- <- Challenge
- Response ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to first challenge+23 ->
- <- Failure (E=648 R=0 V=2), disable short timeout
- ChangePassword (++ID) to first challenge+23 ->
- <- Success
-
-B.2 Hash Example
-
-Intermediate values for password "MyPw".
-
- 8-octet Challenge:
- 10 2D B5 DF 08 5D 30 41
-
- 0-to-256-unicode-char NtPassword:
- 4D 00 79 00 50 00 77 00
-
- 16-octet NtPasswordHash:
- FC 15 6A F7 ED CD 6C 0E DD E3 33 7D 42 7F 4E AC
-
- 24-octet NtChallengeResponse:
- 4E 9D 3C 8F 9C FD 38 5D 5B F4 D3 24 67 91 95 6C
- A4 C3 51 AB 40 9A 3D 61
-
-B.3 Example of DES Key Generation
-
-DES uses 56-bit keys, expanded to 64 bits by the insertion of parity
-bits. After the parity of the key has been fixed, every eighth bit is a
-parity bit and the number of bits that are set (1) in each octet is odd;
-i.e., odd parity. Note that many DES engines do not check parity,
-however, simply stripping the parity bits. The following example
-illustrates the values resulting from the use of the 16-octet
-NTPasswordHash shown in Appendix B.2 to generate a pair of DES keys
-
-
-
-Zorn & Cobb Informational [Page 18]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
-(e.g., for use in the NtPasswordHashEncryptedWithBlock() described in
-Appendix A.17).
-
- 16-octet NtPasswordHash:
- FC 15 6A F7 ED CD 6C 0E DD E3 33 7D 42 7F 4E AC
-
- First "raw" DES key (initial 7 octets of password hash):
- FC 15 6A F7 ED CD 6C
-
- First parity-corrected DES key (eight octets):
- FD 0B 5B 5E 7F 6E 34 D9
-
- Second "raw" DES key (second 7 octets of password hash)
- 0E DD E3 33 7D 42 7F
-
- Second parity-corrected DES key (eight octets):
- 0E 6E 79 67 37 EA 08 FE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn & Cobb Informational [Page 19]
-
-RFC 2433 Microsoft PPP CHAP Extensions Ocotober 1998
-
-
-Full Copyright Statement
-
- Copyright (C) The Internet Society (1998). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn & Cobb Informational [Page 20]
-
diff --git a/doc/rfc2548.txt b/doc/rfc2548.txt
deleted file mode 100644
index 35c83c3..0000000
--- a/doc/rfc2548.txt
+++ /dev/null
@@ -1,2299 +0,0 @@
-
-
-
-
-
-
-Network Working Group G. Zorn
-Request for Comments: 2548 Microsoft Corporation
-Category: Informational March 1999
-
-
- Microsoft Vendor-specific RADIUS Attributes
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
-Abstract
-
- This document describes the set of Microsoft vendor-specific RADIUS
- attributes. These attributes are designed to support Microsoft
- proprietary dial-up protocols and/or provide support for features
- which is not provided by the standard RADIUS attribute set [3]. It
- is expected that this memo will be updated whenever Microsoft defines
- a new vendor-specific attribute, since its primary purpose is to
- provide an open, easily accessible reference for third-parties
- wishing to interoperate with Microsoft products.
-
-1. Specification of Requirements
-
- In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
- "recommended", "SHOULD", and "SHOULD NOT" are to be interpreted as
- described in [2].
-
-2. Attributes
-
- The following sections describe sub-attributes which may be
- transmitted in one or more RADIUS attributes of type Vendor-Specific
- [3]. More than one sub-attribute MAY be transmitted in a single
- Vendor-Specific Attribute; if this is done, the sub-attributes SHOULD
- be packed as a sequence of Vendor-Type/Vendor-Length/Value triples
- following the inital Type, Length and Vendor-ID fields. The Length
- field of the Vendor-Specific Attribute MUST be set equal to the sum
- of the Vendor-Length fields of the sub-attributes contained in the
- Vendor-Specific Attribute, plus six. The Vendor-ID field of the
- Vendor-Specific Attribute(s) MUST be set to decimal 311 (Microsoft).
-
-
-
-
-
-Zorn Informational [Page 1]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
-2.1. Attributes for Support of MS-CHAP Version 1
-
-2.1.1. Introduction
-
- Microsoft created Microsoft Challenge-Handshake Authentication
- Protocol (MS-CHAP) [4] to authenticate remote Windows workstations,
- providing the functionality to which LAN-based users are accustomed.
- Where possible, MS-CHAP is consistent with standard CHAP [5], and the
- differences are easily modularized. Briefly, the differences between
- MS-CHAP and standard CHAP are:
-
- * MS-CHAP is enabled by negotiating CHAP Algorithm 0x80 in LCP
- option 3, Authentication Protocol.
-
- * The MS-CHAP Response packet is in a format designed for
- compatibility with Microsoft Windows NT 3.5, 3.51 and 4.0,
- Microsoft Windows95, and Microsoft LAN Manager 2.x networking
- products. The MS-CHAP format does not require the authenticator
- to store a clear-text or reversibly encrypted password.
-
- * MS-CHAP provides an authenticator-controlled authentication
- retry mechanism.
-
- * MS-CHAP provides an authenticator-controlled password changing
- mechanism.
-
- * MS-CHAP defines an extended set of reason-for-failure codes,
- returned in the Failure packet Message field.
-
- The attributes defined in this section reflect these differences.
-
-2.1.2. MS-CHAP-Challenge
-
- Description
-
- This Attribute contains the challenge sent by a NAS to a Microsoft
- Challenge-Handshake Authentication Protocol (MS-CHAP) user. It
- MAY be used in both Access-Request and Access-Challenge packets.
-
- A summary of the MS-CHAP-Challenge Attribute format is shown below.
- The fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 2]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 11 for MS-CHAP-Challenge.
-
- Vendor-Length
- > 2
-
- String
- The String field contains the MS-CHAP challenge.
-
-2.1.3. MS-CHAP-Response
-
- Description
-
- This Attribute contains the response value provided by a PPP
- Microsoft Challenge-Handshake Authentication Protocol (MS-CHAP)
- user in response to the challenge. It is only used in Access-
- Request packets.
-
- A summary of the MS-CHAP-Response Attribute format is shown below.
- The fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 3]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Ident | Flags |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | LM-Response
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response(cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | NT-Response
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 1 for MS-CHAP-Response.
-
- Vendor-Length
- 52
-
- Ident
- Identical to the PPP CHAP Identifier.
-
- Flags
- The Flags field is one octet in length. If the Flags field is one
- (0x01), the NT-Response field is to be used in preference to the
- LM-Response field for authentication. The LM-Response field MAY
- still be used (if non-empty), but the NT-Response SHOULD be tried
- first. If it is zero, the NT-Response field MUST be ignored and
- the LM-Response field used.
-
-
-
-
-
-Zorn Informational [Page 4]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- LM-Response
- The LM-Response field is 24 octets in length and holds an encoded
- function of the password and the received challenge. If this
- field is empty, it SHOULD be zero-filled.
-
- NT-Response
-
- The NT-Response field is 24 octets in length and holds an encoded
- function of the password and the received challenge. If this
- field is empty, it SHOULD be zero-filled.
-
-2.1.4. MS-CHAP-Domain
-
- Description
-
- The MS-CHAP-Domain Attribute indicates the Windows NT domain in
- which the user was authenticated. It MAY be included in both
- Access-Accept and Accounting-Request packets.
-
- A summary of the MS-CHAP-Domain Attribute format is given below. The
- fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Ident | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 10 for MS-CHAP-Domain.
-
- Vendor-Length
- > 3
-
- Ident
- The Ident field is one octet and aids in matching requests and
- replies.
-
- String
- This field contains the name in ASCII of the Windows NT domain in
- which the user was authenticated.
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 5]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
-2.1.5. MS-CHAP-Error
-
- Description
-
- The MS-CHAP-Error Attribute contains error data related to the
- preceding MS-CHAP exchange. This Attribute may be used in both
- MS-CHAP-V1 and MS-CHAP-V2 (see below) exchanges. It is only used
- in Access-Reject packets.
-
- A summary of the MS-CHAP-Error Attribute format is given below. The
- fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Ident | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 2 for MS-CHAP-Error.
-
- Vendor-Length
- > 3
-
- Ident
- The Ident field is one octet and aids in matching requests and
- replies.
-
- String
- This field contains specially formatted ASCII text, which is
- interpreted by the authenticating peer.
-
-2.1.6. MS-CHAP-CPW-1
-
- Description
-
- This Attribute allows the user to change their password if it has
- expired. This Attribute is only used in Access-Request packets, and
- should only be included if an MS-CHAP-Error attribute was included in
- the immediately preceding Access-Reject packet, the String field of
- the MS-CHAP-Error attribute indicated that the user password had
- expired, and the MS-CHAP version is less than 2.
-
- A summary of the MS-CHAP-CPW-1 Attribute format is shown below. The
- fields are transmitted from left to right.
-
-
-
-
-
-
-Zorn Informational [Page 6]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Code | Ident |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | LM-Old-Password
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Old-Password (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Old-Password (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Old-Password (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | LM-New-Password
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-New-Password (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-New-Password (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-New-Password (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | NT-Old-Password
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Old-Password (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Old-Password (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Old-Password (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | NT-New-Password
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-New-Password (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-New-Password (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-New-Password (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | New-LM-Password-Length | Flags |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 3 for MS-CHAP-PW-1
-
- Vendor-Length
- 72
-
- Code
- The Code field is one octet in length. Its value is always 5.
-
-
-
-Zorn Informational [Page 7]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- Ident
- The Ident field is one octet and aids in matching requests and
- replies.
-
- LM-Old-Password
- The LM-Old-Password field is 16 octets in length. It contains the
- encrypted Lan Manager hash of the old password.
-
- LM-New-Password
- The LM-New-Password field is 16 octets in length. It contains the
- encrypted Lan Manager hash of the new password.
-
- NT-Old-Password
- The NT-Old-Password field is 16 octets in length. It contains the
- encrypted Lan Manager hash of the old password.
-
- NT-New-Password
- The NT-New-Password field is 16 octets in length. It contains the
- encrypted Lan Manager hash of the new password.
-
- New-LM-Password-Length
- The New-LM-Password-Length field is two octets in length and
- contains the length in octets of the new LAN Manager-compatible
- password.
-
- Flags
- The Flags field is two octets in length. If the least significant
- bit of the Flags field is one, this indicates that the NT-New-
- Password and NT-Old-Password fields are valid and SHOULD be used.
- Otherwise, the LM-New-Password and LM-Old-Password fields MUST be
- used.
-
-2.1.7. MS-CHAP-CPW-2
-
- Description
-
- This Attribute allows the user to change their password if it has
- expired. This Attribute is only used in Access-Request packets,
- and should only be included if an MS-CHAP-Error attribute was
- included in the immediately preceding Access-Reject packet, the
- String field of the MS-CHAP-Error attribute indicated that the
- user password had expired, and the MS-CHAP version is equal to 2.
-
- A summary of the MS-CHAP-CPW-2 Attribute format is shown below. The
- fields are transmitted from left to right.
-
-
-
-
-
-
-Zorn Informational [Page 8]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Code | Ident |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Old-NT-Hash
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Old-NT-Hash (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Old-NT-Hash (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Old-NT-Hash (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Old-LM-Hash
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Old-LM-Hash(cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Old-LM-Hash(cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Old-LM-Hash(cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | LM-Response
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Response (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | NT-Response
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--++-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--++-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Flags |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-Zorn Informational [Page 9]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- Vendor-Type
- 4 for MS-CHAP-PW-2
-
- Vendor-Length
- 86
-
- Code
- 6
-
- Ident
- The Ident field is one octet and aids in matching requests and
- replies. The value of this field MUST be identical to that in the
- Ident field in all instances of the MS-CHAP-LM-Enc-PW, MS-CHAP-NT-
- Enc-PW and MS-CHAP-PW-2 attributes contained in a single Access-
- Request packet.
-
- Old-NT-Hash
- The Old-NT-Hash field is 16 octets in length. It contains the old
- Windows NT password hash encrypted with the new Windows NT
- password hash.
-
- Old-LM-Hash
- The Old-LM-Hash field is 16 octets in length. It contains the old
- Lan Manager password hash encrypted with the new Windows NT
- password hash.
-
- LM-Response
- The LM-Response field is 24 octets in length and holds an encoded
- function of the password and the received challenge. If this
- field is empty, it SHOULD be zero-filled.
-
- NT-Response
- The NT-Response field is 24 octets in length and holds an encoded
- function of the password and the received challenge. If this
- field is empty, it SHOULD be zero-filled.
-
- Flags
- The Flags field is two octets in length. If the least significant
- bit (bit 0) of this field is one, the NT-Response field is to be
- used in preference to the LM-Response field for authentication.
- The LM-Response field MAY still be used (if present), but the NT-
- Response SHOULD be tried first. If least significant bit of the
- field is zero, the NT-Response field MUST be ignored and the LM-
- Response field used instead. If bit 1 of the Flags field is one,
- the Old-LM-Hash field is valid and SHOULD be used. If this bit is
- set, at least one instance of the MS-CHAP-LM-Enc-PW attribute MUST
- be included in the packet.
-
-
-
-
-Zorn Informational [Page 10]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
-2.1.8. MS-CHAP-LM-Enc-PW
-
- Description
-
- This Attribute contains the new Windows NT password encrypted with
- the old LAN Manager password hash. The encrypted Windows NT
- password is 516 octets in length; since this is longer than the
- maximum lengtth of a RADIUS attribute, the password must be split
- into several attibutes for transmission. A 2 octet sequence
- number is included in the attribute to help preserve ordering of
- the password fragments.
-
- This Attribute is only used in Access-Request packets, in
- conjunction with the MS-CHAP-CPW-2 attribute. It should only be
- included if an MS-CHAP-Error attribute was included in the
- immediately preceding Access-Reject packet, the String field of
- the MS-CHAP-Error attribute indicated that the user password had
- expired, and the MS-CHAP version is 2 or greater.
-
- A summary of the MS-CHAP-LM-Enc-PW Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Code | Ident |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Sequence-Number | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 5 for MS-CHAP-LM-Enc-PW
-
- Vendor-Length
- > 6
-
- Code 6. Code is the same as for the MS-CHAP-PW-2 attribute.
-
- Ident
- The Ident field is one octet and aids in matching requests and
- replies. The value of this field MUST be identical in all
- instances of the MS-CHAP-LM-Enc-PW, MS-CHAP-NT-Enc-PW and MS-
- CHAP-PW-2 attributes which are present in the same Access-Request
- packet.
-
-
-
-
-
-
-
-Zorn Informational [Page 11]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- Sequence-Number
- The Sequence-Number field is two octets in length and indicates
- which "chunk" of the encrypted password is contained in the
- following String field.
-
- String The String field contains a portion of the encrypted password.
-
-2.2. MS-CHAP-NT-Enc-PW
-
- Description
-
- This Attribute contains the new Windows NT password encrypted with
- the old Windows NT password hash. The encrypted Windows NT
- password is 516 octets in length; since this is longer than the
- maximum lengtth of a RADIUS attribute, the password must be split
- into several attibutes for transmission. A 2 octet sequence
- number is included in the attribute to help preserve ordering of
- the password fragments.
-
- This Attribute is only used in Access-Request packets, in conjunc-
- tion with the MS-CHAP-CPW-2 and MS-CHAP2-CPW attributes. It
- should only be included if an MS-CHAP-Error attribute was included
- in the immediately preceding Access-Reject packet, the String
- field of the MS-CHAP-Error attribute indicated that the user
- password had expired, and the MS-CHAP version is 2 or greater.
-
- A summary of the MS-CHAP-NT-Enc-PW Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Code | Ident |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Sequence-Number | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 6 for MS-CHAP-NT-Enc-PW
-
- Vendor-Length
- > 6
-
- Code
- 6. Code is the same as for the MS-CHAP-PW-2 attribute.
-
-
-
-
-
-
-Zorn Informational [Page 12]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- Ident
- The Ident field is one octet and aids in matching requests and
- replies. The value of this field MUST be identical in all
- instances of the MS-CHAP-LM-Enc-PW, MS-CHAP-NT-Enc-PW and MS-
- CHAP-PW-2 attributes which are present in the same Access-Request
- packet.
-
- Sequence-Number
- The Sequence-Number field is two octets in length and indicates
- which "chunk" of the encrypted password is contained in the
- following String field.
-
- String
- The String field contains a portion of the encrypted password.
-
-2.3. Attributes for Support of MS-CHAP Version 2
-
-2.3.1. Introduction
-
- This section describes RADIUS attributes supporting version two of
- Microsoft's PPP CHAP dialect (MS-CHAP-V2) [14]. MS-CHAP-V2 is
- similar to, but incompatible with, MS-CHAP version one (MS-CHAP-V1)
- [4]. Certain protocol fields have been deleted or reused but with
- different semantics. Where possible, MS-CHAP-V2 is consistent with
- both MS-CHAP-V1 and standard CHAP [1]. Briefly, the differences
- between MS-CHAP-V2 and MS-CHAP-V1 are:
-
- * MS-CHAP-V2 is enabled by negotiating CHAP Algorithm 0x81 in LCP
- option 3, Authentication Protocol.
-
- * MS-CHAP-V2 provides mutual authentication between peers by
- piggybacking a peer challenge on the Response packet and an
- authenticator response on the Success packet.
-
- * The calculation of the "Windows NT compatible challenge
- response" sub-field in the Response packet has been changed to
- include the peer challenge and the user name.
-
- * In MS-CHAP-V1, the "LAN Manager compatible challenge response"
- sub-field was always sent in the Response packet. This field
- has been replaced in MS-CHAP-V2 by the Peer-Challenge field.
-
- * The format of the Message field in the Failure packet has been
- changed.
-
- * The Change Password (version 1) and Change Password (version 2)
- packets are no longer supported. They have been replaced with a
- single Change-Password packet.
-
-
-
-Zorn Informational [Page 13]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- The attributes defined in this section reflect these differences.
-
-2.3.2. MS-CHAP2-Response
-
- Description
-
- This Attribute contains the response value provided by an MS-
- CHAP-V2 peer in response to the challenge. It is only used in
- Access-Request packets.
-
- A summary of the MS-CHAP2-Response Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Ident | Flags |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer-Challenge
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Peer-Challenge (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Peer-Challenge (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Peer-Challenge (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Reserved
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Reserved (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Response
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Response (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 25 for MS-CHAP2-Response.
-
- Vendor-Length
- 52
-
-
-
-Zorn Informational [Page 14]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- Ident
- Identical to the PPP MS-CHAP v2 Identifier.
-
- Flags
- The Flags field is one octet in length. It is reserved for future
- use and MUST be zero.
-
- Peer-Challenge
- The Peer-Challenge field is a 16-octet random number.
-
- Reserved
- This field is reserved for future use and MUST be zero.
-
- Response
- The Response field is 24 octets in length and holds an encoded
- function of the password, the Peer-Challenge field and the
- received challenge.
-
-2.3.3. MS-CHAP2-Success
-
- Description
-
- This Attribute contains a 42-octet authenticator response string.
- This string MUST be included in the Message field of the MS-CHAP-
- V2 Success packet sent from the NAS to the peer. This Attribute
- is only used in Access-Accept packets.
-
- A summary of the MS-CHAP2-Success Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Ident | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 26 for MS-CHAP2-Success.
-
- Vendor-Length
- 45
-
- Ident
- Identical to the PPP MS-CHAP v2 Identifier.
-
- String
- The 42-octet authenticator string (see above).
-
-
-
-
-Zorn Informational [Page 15]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
-2.3.4. MS-CHAP2-CPW
-
- Description
-
- This Attribute allows the user to change their password if it has
- expired. This Attribute is only used in conjunction with the MS-
- CHAP-NT-Enc-PW attribute in Access-Request packets, and should
- only be included if an MS-CHAP-Error attribute was included in the
- immediately preceding Access-Reject packet, the String field of
- the MS-CHAP-Error attribute indicated that the user password had
- expired, and the MS-CHAP version is equal to 3.
-
- A summary of the MS-CHAP-CPW-2 Attribute format is shown below. The
- fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 16]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Code | Ident |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Encrypted-Hash
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Encrypted-Hash (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Encrypted-Hash (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Encrypted-Hash (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer-Challenge
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Peer-Challenge (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Peer-Challenge (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Peer-Challenge (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Peer-Challenge (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Peer-Challenge (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | NT-Response
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--++-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--++-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Response (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Flags |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 27 for MS-CHAP2-PW
-
- Vendor-Length
- 70
-
- Code
- 7
-
-
-
-Zorn Informational [Page 17]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- Ident
- The Ident field is one octet and aids in matching requests and
- replies. The value of this field MUST be identical to that in the
- Ident field in all instances of the MS-CHAP-NT-Enc-PW contained in
- the Access-Request packet.
-
- Encrypted-Hash
- The Encrypted-Hash field is 16 octets in length. It contains the
- old Windows NT password hash encrypted with the new Windows NT
- password hash.
-
- NT-Response
- The NT-Response field is 24 octets in length and holds an encoded
- function of the new password, the Peer-Challenge field and the
- received challenge.
-
- Flags
- The Flags field is two octets in length. This field is reserved
- for future use and MUST be zero.
-
-2.4. Attributes for MPPE Support
-
- This section describes a set of Attributes designed to support the
- use of Microsoft Point-to-Point Encryption (MPPE) [6] in dial-up
- networks. MPPE is a means of representing Point to Point Protocol
- (PPP) [7] packets in a encrypted form. MPPE uses the RSA RC4 [8]
- algorithm for encryption. The length of the session key to be used
- for initializing encryption tables can be negotiated; MPPE currently
- supports 40 bit and 128 bit session keys. MPPE is negotiated within
- option 18 in the PPP Compression Control Protocol (CCP)[9], [10].
-
-2.4.1. MS-CHAP-MPPE-Keys
-
- Description
-
- The MS-CHAP-MPPE-Keys Attribute contains two session keys for use
- by the Microsoft Point-to-Point Encryption Protocol (MPPE). This
- Attribute is only included in Access-Accept packets.
-
- A summary of the MS-CHAP-MPPE-Keys Attribute format is given below.
- The fields are transmitted left to right.
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 18]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Keys
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Keys (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Keys (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Keys (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Keys (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Keys (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Keys (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Keys (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Keys (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 12 for MS-CHAP-MPPE-Keys.
-
- Vendor-Length
- 34
-
- Keys
- The Keys field consists of two logical sub-fields: the LM-Key and
- the NT-Key. The LM-Key is eight octets in length and contains the
- first eight bytes of the output of the function LmPasswordHash(P,
- This hash is constructed as follows: let the plain-text password
- be represented by P.
-
- The NT-Key sub-field is sixteen octets in length and contains the
- first sixteen octets of the hashed Windows NT password. The
- format of the plaintext Keys field is illustrated in the following
- diagram:
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 19]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | LM-Key
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- LM-Key (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | NT-Key
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Key (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Key (cont)
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- NT-Key (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Padding
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Padding (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The Keys field MUST be encrypted by the RADIUS server using the
- same method defined for the User-Password Attribute [3]. Padding
- is required because the method referenced above requires the field
- to be encrypted to be a multiple of sixteen octets in length.
-
- Implementation Note
- This attribute should only be returned in response to an
- Access-Request packet containing MS-CHAP attributes.
-
-2.4.2. MS-MPPE-Send-Key
-
- Description
-
- The MS-MPPE-Send-Key Attribute contains a session key for use by
- the Microsoft Point-to-Point Encryption Protocol (MPPE). As the
- name implies, this key is intended for encrypting packets sent
- from the NAS to the remote host. This Attribute is only included
- in Access-Accept packets.
-
- A summary of the MS-MPPE-Send-Key Attribute format is given below.
- The fields are transmitted left to right.
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 20]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Salt
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 16 for MS-MPPE-Send-Key.
-
- Vendor-Length
- > 4
-
- Salt
- The Salt field is two octets in length and is used to ensure the
- uniqueness of the keys used to encrypt each of the encrypted
- attributes occurring in a given Access-Accept packet. The most
- significant bit (leftmost) of the Salt field MUST be set (1). The
- contents of each Salt field in a given Access-Accept packet MUST
- be unique.
-
- String
- The plaintext String field consists of three logical sub-fields:
- the Key-Length and Key sub-fields (both of which are required),
- and the optional Padding sub-field. The Key-Length sub-field is
- one octet in length and contains the length of the unencrypted Key
- sub-field. The Key sub-field contains the actual encryption key.
- If the combined length (in octets) of the unencrypted Key-Length
- and Key sub-fields is not an even multiple of 16, then the Padding
- sub-field MUST be present. If it is present, the length of the
- Padding sub-field is variable, between 1 and 15 octets. The
- String field MUST be encrypted as follows, prior to transmission:
-
- Construct a plaintext version of the String field by concate-
- nating the Key-Length and Key sub-fields. If necessary, pad
- the resulting string until its length (in octets) is an even
- multiple of 16. It is recommended that zero octets (0x00) be
- used for padding. Call this plaintext P.
-
- Call the shared secret S, the pseudo-random 128-bit Request
- Authenticator (from the corresponding Access-Request packet) R,
- and the contents of the Salt field A. Break P into 16 octet
- chunks p(1), p(2)...p(i), where i = len(P)/16. Call the
- ciphertext blocks c(1), c(2)...c(i) and the final ciphertext C.
- Intermediate values b(1), b(2)...c(i) are required. Encryption
- is performed in the following manner ('+' indicates
- concatenation):
-
-
-
-Zorn Informational [Page 21]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- b(1) = MD5(S + R + A) c(1) = p(1) xor b(1) C = c(1)
- b(2) = MD5(S + c(1)) c(2) = p(2) xor b(2) C = C + c(2)
- . .
- . .
- . .
- b(i) = MD5(S + c(i-1)) c(i) = p(i) xor b(i) C = C + c(i)
-
- The resulting encrypted String field will contain
- c(1)+c(2)+...+c(i).
-
- On receipt, the process is reversed to yield the plaintext String.
-
- Implementation Notes
- It is possible that the length of the key returned may be larger
- than needed for the encryption scheme in use. In this case, the
- RADIUS client is responsible for performing any necessary
- truncation.
-
- This attribute MAY be used to pass a key from an external (e.g.,
- EAP [15]) server to the RADIUS server. In this case, it may be
- impossible for the external server to correctly encrypt the key,
- since the RADIUS shared secret might be unavailable. The external
- server SHOULD, however, return the attribute as defined above; the
- Salt field SHOULD be zero-filled and padding of the String field
- SHOULD be done. When the RADIUS server receives the attribute
- from the external server, it MUST correctly set the Salt field and
- encrypt the String field before transmitting it to the RADIUS
- client. If the channel used to communicate the MS-MPPE-Send-Key
- attribute is not secure from eavesdropping, the attribute MUST be
- cryptographically protected.
-
-2.4.3. MS-MPPE-Recv-Key
-
- Description
-
- The MS-MPPE-Recv-Key Attribute contains a session key for use by
- the Microsoft Point-to-Point Encryption Protocol (MPPE). As the
- name implies, this key is intended for encrypting packets received
- by the NAS from the remote host. This Attribute is only included
- in Access-Accept packets.
-
- A summary of the MS-MPPE-Recv-Key Attribute format is given below.
- The fields are transmitted left to right.
-
-
-
-
-
-
-
-
-Zorn Informational [Page 22]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Salt
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 17 for MS-MPPE-Recv-Key.
-
- Vendor-Length
- > 4
-
- Salt
- The Salt field is two octets in length and is used to ensure the
- uniqueness of the keys used to encrypt each of the encrypted
- attributes occurring in a given Access-Accept packet. The most
- significant bit (leftmost) of the Salt field MUST be set (1). The
- contents of each Salt field in a given Access-Accept packet MUST
- be unique.
-
- String
- The plaintext String field consists of three logical sub-fields:
- the Key-Length and Key sub-fields (both of which are required),
- and the optional Padding sub-field. The Key-Length sub-field is
- one octet in length and contains the length of the unencrypted Key
- sub-field. The Key sub-field contains the actual encryption key.
- If the combined length (in octets) of the unencrypted Key-Length
- and Key sub-fields is not an even multiple of 16, then the Padding
- sub-field MUST be present. If it is present, the length of the
- Padding sub-field is variable, between 1 and 15 octets. The
- String field MUST be encrypted as follows, prior to transmission:
-
- Construct a plaintext version of the String field by
- concatenating the Key-Length and Key sub-fields. If necessary,
- pad the resulting string until its length (in octets) is an
- even multiple of 16. It is recommended that zero octets (0x00)
- be used for padding. Call this plaintext P.
-
- Call the shared secret S, the pseudo-random 128-bit Request
- Authenticator (from the corresponding Access-Request packet) R,
- and the contents of the Salt field A. Break P into 16 octet
- chunks p(1), p(2)...p(i), where i = len(P)/16. Call the
- ciphertext blocks c(1), c(2)...c(i) and the final ciphertext C.
- Intermediate values b(1), b(2)...c(i) are required. Encryption
- is performed in the following manner ('+' indicates
- concatenation):
-
-
-
-Zorn Informational [Page 23]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- b(1) = MD5(S + R + A) c(1) = p(1) xor b(1) C = c(1)
- b(2) = MD5(S + c(1)) c(2) = p(2) xor b(2) C = C + c(2)
- . .
- . .
- . .
- b(i) = MD5(S + c(i-1)) c(i) = p(i) xor b(i) C = C + c(i)
-
- The resulting encrypted String field will contain
- c(1)+c(2)+...+c(i).
-
- On receipt, the process is reversed to yield the plaintext String.
-
- Implementation Notes
- It is possible that the length of the key returned may be larger
- than needed for the encryption scheme in use. In this case, the
- RADIUS client is responsible for performing any necessary
- truncation.
-
- This attribute MAY be used to pass a key from an external (e.g.,
- EAP [15]) server to the RADIUS server. In this case, it may be
- impossible for the external server to correctly encrypt the key,
- since the RADIUS shared secret might be unavailable. The external
- server SHOULD, however, return the attribute as defined above; the
- Salt field SHOULD be zero-filled and padding of the String field
- SHOULD be done. When the RADIUS server receives the attribute
- from the external server, it MUST correctly set the Salt field and
- encrypt the String field before transmitting it to the RADIUS
- client. If the channel used to communicate the MS-MPPE-Recv-Key
- attribute is not secure from eavesdropping, the attribute MUST be
- cryptographically protected.
-
-2.4.4. MS-MPPE-Encryption-Policy
-
- Description
-
- The MS-MPPE-Encryption-Policy Attribute may be used to signify
- whether the use of encryption is allowed or required. If the
- Policy field is equal to 1 (Encryption-Allowed), any or none of
- the encryption types specified in the MS-MPPE-Encryption-Types
- Attribute MAY be used. If the Policy field is equal to 2
- (Encryption-Required), any of the encryption types specified in
- the MS-MPPE-Encryption-Types Attribute MAY be used, but at least
- one MUST be used.
-
- A summary of the MS-MPPE-Encryption-Policy Attribute format is given
- below. The fields are transmitted left to right.
-
-
-
-
-
-Zorn Informational [Page 24]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Policy
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Policy (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 7 for MS-MPPE-Encryption-Policy.
-
- Vendor-Length
- 6
-
- Policy
- The Policy field is 4 octets in length. Defined values are:
-
- 1 Encryption-Allowed 2 Encryption-Required
-
-2.4.5. MS-MPPE-Encryption-Types
-
- Description
-
- The MS-MPPE-Encryption-Types Attribute is used to signify the
- types of encryption available for use with MPPE. It is a four
- octet integer that is interpreted as a string of bits.
-
- A summary of the MS-MPPE-Encryption-Policy Attribute format is given
- below. The fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Types
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Types (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 8 for MS-MPPE-Encryption-Types.
-
- Vendor-Length
- 6
-
- Policy
- The Types field is 4 octets in length. The following diagram
- illustrates the Types field.
-
-
-
-
-Zorn Informational [Page 25]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 3 2 1
- 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |S|L| |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- If the L bit is set, RC4[5] encryption using a 40-bit key is
- allowed. If the S bit is set, RC4 encryption using a 128-bit key
- is allowed. If both the L and S bits are set, then either 40- or
- 128-bit keys may be used with the RC4 algorithm.
-
-2.5. Attributes for BAP Support
-
- This section describes a set of vendor-specific RADIUS attributes
- designed to support the dynamic control of bandwidth allocation in
- multilink PPP [11]. Attributes are defined that specify whether use
- of the PPP Bandwidth Allocation Protocol (BAP) [12] is allowed or
- required on incoming calls, the level of line capacity (expressed as
- a percentage) below which utilization must fall before a link is
- eligible to be dropped, and the length of time (in seconds) that a
- link must be under-utilized before it is dropped.
-
-2.5.1. MS-BAP-Usage
-
- Description
-
- This Attribute describes whether the use of BAP is allowed,
- disallowed or required on new multilink calls. It MAY be used in
- Access-Accept packets.
-
- A summary of the MS-BAP-Usage Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 13 for MS-BAP-Usage.
-
- Vendor-Length
- 6
-
-
-
-
-
-Zorn Informational [Page 26]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- Value
- The Value field is four octets.
-
- 0 BAP usage not allowed
- 1 BAP usage allowed
- 2 BAP usage required
-
-2.5.2. MS-Link-Utilization-Threshold
-
- Description
-
- This Attribute represents the percentage of available bandwidth
- utilization below which the link must fall before the link is
- eligible for termination. Permissible values for the MS-Link-
- Utilization-Threshold Attribute are in the range 1-100, inclusive.
- It is only used in Access-Accept packets.
-
- A summary of the MS-Link-Utilization-Threshold Attribute format is
- shown below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 14 for MS-Link-Utilization-Threshold
-
- Vendor-Length 6
-
- Value The Value field is four octets in length and represents the
- percentage of available bandwidth utilization below which the link
- must fall before the link is eligible for termination.
- Permissible values are in the range 1-100, inclusive.
-
-2.5.3. MS-Link-Drop-Time-Limit
-
- Description
-
- The MS-Link-Drop-Time-Limit Attribute indicates the length of time
- (in seconds) that a link must be underutilized before it is
- dropped. It MAY only be included in Access-Accept packets.
-
- A summary of the MS-Link-Drop-Time-Limit Attribute format is given
- below. The fields are transmitted left to right.
-
-
-
-Zorn Informational [Page 27]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 15 for MS-Link-Drop-Time-Limit
-
- Vendor-Length
- 6
-
- Value
- The Value field represents the number of seconds that a link must
- be underutilized (i.e., display bandwidth utilization below the
- threshold specified in the MS-Link-Utilization-Threshold
- Attribute) before the link is dropped.
-
-2.6. Attributes for ARAP Support
-
- This section describes a set of Attributes designed to support the
- Apple Remote Access Protocol (ARAP).
-
-2.6.1. MS-Old-ARAP-Password
-
- Description
-
- The MS-Old-ARAP-Password Attribute is used to transmit the old
- ARAP password during an ARAP password change operation. It MAY be
- included in Access-Request packets.
-
- A summary of the MS-Old-ARAP-Password Attribute Attribute format is
- given below. The fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 19 for MS-Old-ARAP-Password Attribute
-
- Vendor-Length
- > 3
-
-
-
-
-Zorn Informational [Page 28]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- String
- The String field is one or more octets. It contains the old ARAP
- password DES-encrypted using itself as the key.
-
-2.6.2. MS-New-ARAP-Password
-
- Description
-
- The MS-New-ARAP-Password Attribute is used to transmit the new
- ARAP password during an ARAP password change operation. It MAY be
- included in Access-Request packets.
-
- A summary of the MS-New-ARAP-Password Attribute Attribute format is
- given below. The fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 20 for MS-New-ARAP-Password Attribute
-
- Vendor-Length
- > 3
-
- String
- The String field is one or more octets. It contains the new ARAP
- password DES-encrypted using the old ARAP password as the key.
-
-2.6.3. MS-ARAP-Password-Change-Reason
-
- Description
-
- The MS-ARAP-Password-Change-Reason Attribute is used to indicate
- reason for a server-initiated password change. It MAY be included
- in Access-Challenge packets.
-
- A summary of the MS-ARAP-Password-Change-Reason Attribute format is
- given below. The fields are transmitted left to right.
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 29]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Why
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Why (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 21 for MS-ARAP-Password-Change-Reason
-
- Vendor-Length
- 6
-
- Why
- The Why field is 4 octets in length. The following values are
- defined:
- Just-Change-Password 1
- Expired-Password 2
- Admin-Requires-Password-Change 3
- Password-Too-Short 4
-
-2.6.4. MS-ARAP-Challenge
-
- Description
-
- This attribute is only present in an Access-Request packet
- containing a Framed-Protocol Attribute with the value 3 (ARAP).
-
- A summary of the MS-ARAP-Challenge Attribute format is given below.
- The fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Challenge
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Challenge (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Challenge (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 33 for MS-ARAP-Challenge
-
- Vendor-Length
- 10
-
-
-
-
-Zorn Informational [Page 30]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- Value
- The Challenge Field is 8 octets in length. It contains the
- challenge (as two 4-octet quantities) sent by the NAS to the peer.
-
-2.7. Miscellaneous Attributes
-
- This section describes attributes which do not fall into any
- particular category, but are used in the identification and operation
- of Microsoft remote access products.
-
-2.7.1. MS-RAS-Vendor
-
- Description
-
- The MS-RAS-Vendor Attribute is used to indicate the manufacturer
- of the RADIUS client machine. It MAY be included in both Access-
- Request and Accounting-Request packets.
-
- A summary of the MS-RAS-Vendor Attribute format is given below. The
- fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Vendor-ID
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Vendor-ID (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 9 for MS-RAS-Vendor
-
- Vendor-Length
- 6
-
- Vendor-ID
- The Vendor-ID field is 4 octets in length. The high-order octet
- is 0 and the low-order 3 octets are the SMI Network Management
- Private Enterprise Code of the Vendor in network byte order, as
- defined in the Assigned Numbers RFC [13].
-
-2.7.2. MS-RAS-Version
-
- Description
-
- The MS-RAS-Version Attribute is used to indicate the version of
- the RADIUS client software. This attribute SHOULD be included in
- packets containing an MS-RAS-Vendor Attribute; it SHOULD NOT be
-
-
-
-Zorn Informational [Page 31]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- sent in packets which do not contain an MS-RAS-Vendor Attribute.
- It MAY be included in both Access-Request and Accounting-Request
- packets.
-
- A summary of the MS-RAS-Version Attribute format is given below. The
- fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 18 for MS-RAS-Version
-
- Vendor-Length
- > 3
-
- String
- The String field is one or more octets. The actual format of the
- information is vendor specific, and a robust implementation SHOULD
- support the field as undistinguished octets.
-
-2.7.3. MS-Filter
-
- Description
-
- The MS-Filter Attribute is used to transmit traffic filters. It
- MAY be included in both Access-Accept and Accounting-Request
- packets.
-
- If multiple MS-Filter Attributes are contained within a packet,
- they MUST be in order and they MUST be consecutive attributes in
- the packet.
-
- A summary of the MS-Filter Attribute format is given below. The
- fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Filter...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 22 for MS-Filter Attribute
-
-
-
-
-Zorn Informational [Page 32]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- Vendor-Length
- > 3
-
- Filter
- The Filter field is one or more octets. It contains a sequence of
- undifferentiated octets.
-
- If multiple MS-Filter Attributes occur in a single Access-Accept
- packet, the Filter field from each MUST be concatenated in the
- order received to form the actual filter.
-
-2.7.4. MS-Acct-Auth-Type
-
- Description
-
- The MS-Acct-Auth-Type Attribute is used to represent the method
- used to authenticate the dial-up user. It MAY be included in
- Accounting-Request packets.
-
- A summary of the MS-Acct-Auth-Type Attribute format is given below.
- The fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | Auth-Type
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Auth-Type (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 23 for MS-Acct-Auth-Type
-
- Vendor-Length
- 6
-
- Auth-Type
- The Auth-Type field is 4 octets in length. The following values
- are defined for this field:
-
- PAP 1
- CHAP 2
- MS-CHAP-1 3
- MS-CHAP-2 4
- EAP 5
-
-
-
-
-
-
-Zorn Informational [Page 33]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
-2.7.5. MS-Acct-EAP-Type
-
- Description
-
- The MS-Acct-EAP-Type Attribute is used to represent the Extensible
- Authentication Protocol (EAP) [15] type used to authenticate the
- dial-up user. It MAY be included in Accounting-Request packets.
-
- A summary of the MS-Acct-EAP-Type Attribute format is given below.
- The fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | EAP-Type
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- EAP-Type (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 24 for MS-Acct-EAP-Type
-
- Vendor-Length
- 6
-
- Auth-Type
- The EAP-Type field is 4 octets in length. The following values
- are currently defined for this field:
-
- MD5 4
- OTP 5
- Generic Token Card 6
- TLS 13
-
-2.7.6. MS-Primary-DNS-Server
-
- Description
-
- The MS-Primary-DNS-Server Attribute is used to indicate the
- address of the primary Domain Name Server (DNS) [16, 17] server to
- be used by the PPP peer. It MAY be included in both Access-Accept
- and Accounting-Request packets.
-
- A summary of the MS-Primary-DNS-Server Attribute format is given
- below. The fields are transmitted left to right.
-
-
-
-
-
-
-Zorn Informational [Page 34]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | IP-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- IP-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 28 for MS-Primary-DNS-Server
-
- Vendor-Length
- 6
-
- IP-Address
- The IP-Address field is 4 octets in length. It contains the IP
- address of the primary DNS server.
-
-2.7.7. MS-Secondary-DNS-Server
-
- Description
-
- The MS-Secondary-DNS-Server Attribute is used to indicate the
- address of the secondary DNS server to be used by the PPP peer.
- It MAY be included in both Access-Accept and Accounting-Request
- packets.
-
- A summary of the MS-Secondary-DNS-Server Attribute format is given
- below. The fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | IP-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- IP-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 29 for MS-Secondary-DNS-Server
-
- Vendor-Length
- 6
-
- IP-Address
- The IP-Address field is 4 octets in length. It contains the IP
- address of the secondary DNS server.
-
-
-
-
-Zorn Informational [Page 35]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
-2.7.8. MS-Primary-NBNS-Server
-
- Description
-
- The MS-Primary-NBNS-Server Attribute is used to indicate the
- address of the primary NetBIOS Name Server (NBNS) [18] server to
- be used by the PPP peer. It MAY be included in both Access-Accept
- and Accounting-Request packets.
-
- A summary of the MS-Primary-MBNS-Server Attribute format is given
- below. The fields are transmitted left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | IP-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- IP-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 30 for MS-Primary-NBNS-Server
-
- Vendor-Length
- 6
-
- IP-Address
- The IP-Address field is 4 octets in length. It contains the IP
- address of the primary NBNS server.
-
-2.7.9. MS-Secondary-NBNS-Server
-
- Description
-
- The MS-Secondary-NBNS-Server Attribute is used to indicate the
- address of the secondary DNS server to be used by the PPP peer.
- It MAY be included in both Access-Accept and Accounting-Request
- packets.
-
- A summary of the MS-Secondary-NBNS-Server Attribute format is given
- below. The fields are transmitted left to right.
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 36]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Vendor-Type | Vendor-Length | IP-Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- IP-Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Vendor-Type
- 31 for MS-Secondary-NBNS-Server
-
- Vendor-Length
- 6
-
- IP-Address
- The IP-Address field is 4 octets in length. It contains the IP
- address of the secondary NBNS server.
-
-3. Table of Attributes
-
- The following table provides a guide to which of the above attributes
- may be found in which kinds of packets, and in what quantity.
-
- Request Accept Reject Challenge Acct-Request # Attribute
- 0-1 0 0 0 0 1 MS-CHAP-Response
- 0 0 0-1 0 0 2 MS-CHAP-Error
- 0-1 0 0 0 0 3 MS-CHAP-CPW-1
- 0-1 0 0 0 0 4 MS-CHAP-CPW-2
- 0+ 0 0 0 0 5 MS-CHAP-LM-Enc-PW
- 0+ 0 0 0 0 6 MS-CHAP-NT-Enc-PW
- 0 0-1 0 0 0 7 MS-MPPE-Encryption-
- Policy
- 0 0-1 0 0 0 8 MS-MPPE-Encryption-Type
- 0-1 0 0 0 0-1 9 MS-RAS-Vendor
- 0 0-1 0 0 0-1 10 MS-CHAP-Domain
- 0-1 0 0 0-1 0 11 MS-CHAP-Challenge
- 0 0-1 0 0 0 12 MS-CHAP-MPPE-Keys
- 0 0-1 0 0 0 13 MS-BAP-Usage
- 0 0-1 0 0 0 14 MS-Link-Utilization-
- Threshold
- 0 0-1 0 0 0 15 MS-Link-Drop-Time-Limit
- 0 0-1 0 0 0 16 MS-MPPE-Send-Key
- 0 0-1 0 0 0 17 MS-MPPE-Recv-Key
- 0-1 0 0 0 0-1 18 MS-RAS-Version
- 0-1 0 0 0 0 19 MS-Old-ARAP-Password
- 0-1 0 0 0 0 20 MS-New-ARAP-Password
- 0 0 0 0-1 0 21 MS-ARAP-PW-Change-
- Reason
-
-
-
-Zorn Informational [Page 37]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- 0 0+ 0 0 0+ 22 MS-Filter
- 0 0 0 0 0-1 23 MS-Acct-Auth-Type
- 0 0 0 0 0-1 24 MS-Acct-EAP-Type
- 0-1 0 0 0 0 25 MS-CHAP2-Response
- 0 0-1 0 0 0 26 MS-CHAP2-Success
- 0-1 0 0 0 0 27 MS-CHAP2-CPW
- 0 0-1 0 0 0-1 28 MS-Primary-DNS-Server
- 0 0-1 0 0 0-1 29 MS-Secondary-DNS-Server
- 0 0-1 0 0 0-1 30 MS-Primary-NBNS-Server
- 0 0-1 0 0 0-1 31 MS-Secondary-NBNS-
- Server
- 0-1 0 0 0 0 33 MS-ARAP-Challenge
-
-The following table defines the meaning of the above table entries.
-
-0 This attribute MUST NOT be present in packet.
-0+ Zero or more instances of this attribute MAY be present in packet.
-0-1 Zero or one instance of this attribute MAY be present in packet.
-
-4. Security Considerations
-
- MS-CHAP, like PPP CHAP, is susceptible to dictionary attacks. User
- passwords should be chosen with care, and be of sufficient length to
- deter easy guessing.
-
- Although the scheme used to protect the Keys field of the MS-CHAP-
- MPPE-Keys, MS-MPPE-Send-Key and MS-MPPE-Recv-Key Attributes is
- believed to be relatively secure on the wire, RADIUS proxies will
- decrypt and re-encrypt the field for forwarding. Therefore, these
- attributes SHOULD NOT be used on networks where untrusted RADIUS
- proxies reside.
-
-5. Acknowledgements
-
- Thanks to Carl Rigney (cdr@livingston.com), Ashwin Palekar (ash-
- winp@microsoft.com), Aydin Edguer (edguer@MorningStar.com), Narendra
- Gidwani (nareng@microsoft.com), Steve Cobb (stevec@microsoft.com),
- Pat Calhoun (pcalhoun@eng.sun.com), Dave Mitton
- (dmitton@baynetworks.com), Paul Funk (paul@funk.com), Gurdeep Singh
- Pall (gurdeep@microsoft.com), Stephen Bensley (sbens@microsoft.com),
- and Don Rule (don-aldr@microsoft.com) for useful suggestions and
- editorial feedback.
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 38]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
-6. Editor's Address
-
- Questions about this memo can be directed to:
-
- Glen Zorn
- Microsoft Corporation
- One Microsoft Way
- Redmond, Washington 98052
-
- Phone: +1 425 703 1559
- Fax: +1 425 936 7329
- EMail: glennz@microsoft.com
-
-7. References
-
- [1] Simpson, W., "PPP Challenge Handshake Authentication
- Protocol (CHAP)", RFC 1994, August 1996.
-
- [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
- [3] Rigney, C., Rubens, A., Simpson, W. and S. Willens, "Remote
- Access Dial In User Service", RFC 2138, April 1997.
-
- [4] Zorn, G. and S. Cobb, "Microsoft PPP CHAP Extensions", RFC 2433,
- October 1998.
-
- [5] Simpson, W., "PPP Challenge Handshake Authentication Protocol
- (CHAP)", RFC 1994, August 1996.
-
- [6] Zorn, G. and G. Pall, "Microsoft Point-to-Point Encryption
- (MPPE) Protocol", Work in Progress.
-
- [7] Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51, RFC
- 1661, July 1994.
-
- [8] RC4 is a proprietary encryption algorithm available under
- license from RSA Data Security Inc. For licensing information,
- contact:
- RSA Data Security, Inc.
- 100 Marine Parkway
- Redwood City, CA 94065-1031
-
- [9] Pall, G., "Microsoft Point-to-Point Compression (MPPC)
- Protocol", RFC 2118, March 1997.
-
- [10] Rand, D., "The PPP Compression Control Protocol (CCP)", RFC
- 1962, June 1996.
-
-
-
-Zorn Informational [Page 39]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
- [11] Sklower, K., Lloyd, B., McGregor, G., Carr, D. and T. Coradetti,
- "The PPP Multilink Protocol (MP)", RFC 1990, August 1996.
-
- [12] Richards, C. and K. Smith, "The PPP Bandwidth Allocation
- Protocol (BAP) The PPP Bandwidth Allocation Control Protocol
- (BACP)", RFC 2125, March 1997.
-
- [13] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
- October 1994.
-
- [14] Zorn, G., "Microsoft PPP CHAP Extensions, Version 2", Work in
- Progress.
-
- [15] Blunk, L. and J. Vollbrecht, "PPP Extensible Authentication
- Protocol (EAP)", RFC 2284, March 1998.
-
- [16] Mockapetris, P., "Domain Names - Concepts and Facilities", STD
- 13, RFC 1034, USC/ISI, November 1987.
-
- [17] Mockapetris, P., "Domain Names - Implementation and
- Specification", STD 13, RFC 1035, November 1987.
-
- [18] Auerbach, K., and A. Aggarwal, "Protocol Standard for a NetBIOS
- Service on a TCP/UDP Transport", STD 19, RFCs 1001 and 1002,
- March 1987.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 40]
-
-RFC 2548 Microsoft Vendor-specific RADIUS Attributes March 1999
-
-
-10. Full Copyright Statement
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 41]
-
diff --git a/doc/rfc2637.txt b/doc/rfc2637.txt
deleted file mode 100644
index 56e9e0f..0000000
--- a/doc/rfc2637.txt
+++ /dev/null
@@ -1,3195 +0,0 @@
-
-
-
-
-
-
-Network Working Group K. Hamzeh
-Request for Comments: 2637 Ascend Communications
-Category: Informational G. Pall
- Microsoft Corporation
- W. Verthein
- 3Com
- J. Taarud
- Copper Mountain Networks
- W. Little
- ECI Telematics
- G. Zorn
- Microsoft Corporation
- July 1999
-
-
- Point-to-Point Tunneling Protocol (PPTP)
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
-IESG Note
-
- The PPTP protocol was developed by a vendor consortium. The
- documentation of PPTP is provided as information to the Internet
- community. The PPP WG is currently defining a Standards Track
- protocol (L2TP) for tunneling PPP across packet-switched networks.
-
-Abstract
-
- This document specifies a protocol which allows the Point to Point
- Protocol (PPP) to be tunneled through an IP network. PPTP does not
- specify any changes to the PPP protocol but rather describes a new
- vehicle for carrying PPP. A client-server architecture is defined in
- order to decouple functions which exist in current Network Access
- Servers (NAS) and support Virtual Private Networks (VPNs). The PPTP
- Network Server (PNS) is envisioned to run on a general purpose
- operating system while the client, referred to as a PPTP Access
- Concentrator (PAC) operates on a dial access platform. PPTP
- specifies a call-control and management protocol which allows the
- server to control access for dial-in circuit switched calls
- originating from a PSTN or ISDN or to initiate outbound circuit-
-
-
-
-Hamzeh, et al. Informational [Page 1]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- switched connections. PPTP uses an enhanced GRE (Generic Routing
- Encapsulation) mechanism to provide a flow- and congestion-controlled
- encapsulated datagram service for carrying PPP packets.
-
-Specification of Requirements
-
- In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
- "recommended", "SHOULD", and "SHOULD NOT" are to be interpreted as
- described in [12].
-
- The words "silently discard", when used in reference to the behavior
- of an implementation upon receipt of an incoming packet, are to be
- interpreted as follows: the implementation discards the datagram
- without further processing, and without indicating an error to the
- sender. The implementation SHOULD provide the capability of logging
- the error, including the contents of the discarded datagram, and
- SHOULD record the event in a statistics counter.
-
-Table of Contents
-
- 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
- 1.1. Protocol Goals and Assumptions . . . . . . . . . . . . . . 4
- 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5
- 1.3. Protocol Overview . . . . . . . . . . . . . . . . . . . . 6
- 1.3.1. Control Connection Overview . . . . . . . . . . . . . . 7
- 1.3.2. Tunnel Protocol Overview . . . . . . . . . . . . . . . . 7
- 1.4. Message Format and Protocol Extensibility . . . . . . . . 8
- 2. Control Connection Protocol Specification . . . . . . . . . 10
- 2.1. Start-Control-Connection-Request . . . . . . . . . . . . . 10
- 2.2. Start-Control-Connection-Reply . . . . . . . . . . . . . . 12
- 2.3. Stop-Control-Connection-Request . . . . . . . . . . . . . 15
- 2.4. Stop-Control-Connection-Reply . . . . . . . . . . . . . . 16
- 2.5. Echo-Request . . . . . . . . . . . . . . . . . . . . . . . 17
- 2.6. Echo-Reply . . . . . . . . . . . . . . . . . . . . . . . . 18
- 2.7. Outgoing-Call-Request . . . . . . . . . . . . . . . . . . 19
- 2.8. Outgoing-Call-Reply . . . . . . . . . . . . . . . . . . . 22
- 2.9. Incoming-Call-Request . . . . . . . . . . . . . . . . . . 25
- 2.10. Incoming-Call-Reply . . . . . . . . . . . . . . . . . . . 28
- 2.11. Incoming-Call-Connected . . . . . . . . . . . . . . . . . 29
- 2.12. Call-Clear-Request . . . . . . . . . . . . . . . . . . . 31
- 2.13. Call-Disconnect-Notify . . . . . . . . . . . . . . . . . 32
- 2.14. WAN-Error-Notify . . . . . . . . . . . . . . . . . . . . 33
- 2.15. Set-Link-Info . . . . . . . . . . . . . . . . . . . . . . 35
- 2.16. General Error Codes . . . . . . . . . . . . . . . . . . . 36
- 3. Control Connection Protocol Operation . . . . . . . . . . . 36
- 3.1. Control Connection States . . . . . . . . . . . . . . . . 37
- 3.1.1. Control Connection Originator (may be PAC or PNS) . . . 37
- 3.1.2. Control connection Receiver (may be PAC or PNS) . . . . 39
-
-
-
-Hamzeh, et al. Informational [Page 2]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 3.1.3. Start Control Connection Initiation Request Collision . 40
- 3.1.4. Keep Alives and Timers . . . . . . . . . . . . . . . . . 40
- 3.2. Call States . . . . . . . . . . . . . . . . . . . . . . . 41
- 3.2.1. Timing considerations . . . . . . . . . . . . . . . . . 41
- 3.2.2. Call ID Values . . . . . . . . . . . . . . . . . . . . . 41
- 3.2.3. Incoming Calls . . . . . . . . . . . . . . . . . . . . . 41
- 3.2.3.1. PAC Incoming Call States . . . . . . . . . . . . . . . 42
- 3.2.3.2. PNS Incoming Call States . . . . . . . . . . . . . . . 43
- 3.2.4. Outgoing Calls . . . . . . . . . . . . . . . . . . . . . 44
- 3.2.4.1. PAC Outgoing Call States . . . . . . . . . . . . . . . 45
- 3.2.4.2. PNS Outgoing Call States . . . . . . . . . . . . . . . 46
- 4. Tunnel Protocol Operation . . . . . . . . . . . . . . . . . 47
- 4.1. Enhanced GRE header . . . . . . . . . . . . . . . . . . . 47
- 4.2. Sliding Window Protocol . . . . . . . . . . . . . . . . . 49
- 4.2.1. Initial Window Size . . . . . . . . . . . . . . . . . . 49
- 4.2.2. Closing the Window . . . . . . . . . . . . . . . . . . . 49
- 4.2.3. Opening the Window . . . . . . . . . . . . . . . . . . . 50
- 4.2.4. Window Overflow . . . . . . . . . . . . . . . . . . . . 50
- 4.2.5. Multi-packet Acknowledgment . . . . . . . . . . . . . . 50
- 4.3. Out-of-sequence Packets . . . . . . . . . . . . . . . . . 50
- 4.4. Acknowledgment Time-Outs . . . . . . . . . . . . . . . . . 51
- 4.4.1. Calculating Adaptive Acknowledgment Time-Out . . . . . . 53
- 4.4.2. Congestion Control: Adjusting for Time-Out . . . . . . . 54
- 5. Security Considerations . . . . . . . . . . . . . . . . . . 54
- 6. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 55
- 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 56
- 8. Full Copyright Statement . . . . . . . . . . . . . . . . . . 57
-
-1. Introduction
-
- PPTP allows existing Network Access Server (NAS) functions to be
- separated using a client-server architecture. Traditionally, the
- following functions are implemented by a NAS:
-
- 1) Physical native interfacing to PSTN or ISDN and control of
- external modems or terminal adapters.
-
- A NAS may interface directly to a telco analog or digital
- circuit or attach via an external modem or terminal adapter.
- Control of a circuit-switched connection is accomplished with
- either modem control or DSS1 ISDN call control protocols.
-
- The NAS, in conjunction with the modem or terminal adapters,
- may perform rate adaption, analog to digital conversion, sync
- to async conversion or a number of other alterations of data
- streams.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 3]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 2) Logical termination of a Point-to-Point-Protocol (PPP) Link
- Control Protocol (LCP) session.
-
- 3) Participation in PPP authentication protocols [3,9,10].
-
- 4) Channel aggregation and bundle management for PPP Multilink
- Protocol.
-
- 5) Logical termination of various PPP network control protocols
- (NCP).
-
- 6) Multiprotocol routing and bridging between NAS interfaces.
-
- PPTP divides these functions between the PAC and PNS. The PAC is
- responsible for functions 1, 2, and possibly 3. The PNS may be
- responsible for function 3 and is responsible for functions 4, 5, and
- 6. The protocol used to carry PPP protocol data units (PDUs) between
- the PAC and PNS, as well as call control and management is addressed
- by PPTP.
-
- The decoupling of NAS functions offers these benefits:
-
- Flexible IP address management. Dial-in users may maintain a
- single IP address as they dial into different PACs as long as they
- are served from a common PNS. If an enterprise network uses
- unregistered addresses, a PNS associated with the enterprise
- assigns addresses meaningful to the private network.
-
- Support of non-IP protocols for dial networks behind IP networks.
- This allows Appletalk and IPX, for example to be tunneled through
- an IP-only provider. The PAC need not be capable of processing
- these protocols.
-
- A solution to the "multilink hunt-group splitting" problem.
- Multilink PPP, typically used to aggregate ISDN B channels,
- requires that all of the channels composing a multilink bundle be
- grouped at a single NAS. Since a multilink PPP bundle can be
- handled by a single PNS, the channels comprising the bundle may be
- spread across multiple PACs.
-
-1.1. Protocol Goals and Assumptions
-
- The PPTP protocol is implemented only by the PAC and PNS. No other
- systems need to be aware of PPTP. Dial networks may be connected to a
- PAC without being aware of PPTP. Standard PPP client software should
- continue to operate on tunneled PPP links.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 4]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- PPTP can also be used to tunnel a PPP session over an IP network. In
- this configuration the PPTP tunnel and the PPP session runs between
- the same two machines with the caller acting as a PNS.
-
- It is envisioned that there will be a many-to-many relationship
- between PACs and PNSs. A PAC may provide service to many PNSs. For
- example, an Internet service provider may choose to support PPTP for
- a number of private network clients and create VPNs for them. Each
- private network may operate one or more PNSs. A single PNS may
- associate with many PACs to concentrate traffic from a large number
- of geographically diverse sites.
-
- PPTP uses an extended version of GRE to carry user PPP packets. These
- enhancements allow for low-level congestion and flow control to be
- provided on the tunnels used to carry user data between PAC and PNS.
- This mechanism allows for efficient use of the bandwidth available
- for the tunnels and avoids unnecessary retransmisions and buffer
- overruns. PPTP does not dictate the particular algorithms to be used
- for this low level control but it does define the parameters that
- must be communicated in order to allow such algorithms to work.
- Suggested algorithms are included in section 4.
-
-1.2. Terminology
-
- Analog Channel
-
- A circuit-switched communication path which is intended to carry
- 3.1 Khz audio in each direction.
-
- Digital Channel
-
- A circuit-switched communication path which is intended to carry
- digital information in each direction.
-
- Call
-
- A connection or attempted connection between two terminal
- endpoints on a PSTN or ISDN -- for example, a telephone call
- between two modems.
-
- Control Connection
-
- A control connection is created for each PAC, PNS pair and
- operates over TCP [4]. The control connection governs aspects of
- the tunnel and of sessions assigned to the tunnel.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 5]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Dial User
-
- An end-system or router attached to an on-demand PSTN or ISDN
- which is either the initiator or recipient of a call.
-
- Network Access Server (NAS)
-
- A device providing temporary, on-demand network access to users.
- This access is point-to-point using PSTN or ISDN lines.
-
- PPTP Access Concentrator (PAC)
-
- A device attached to one or more PSTN or ISDN lines capable of PPP
- operation and of handling the PPTP protocol. The PAC need only
- implement TCP/IP to pass traffic to one or more PNSs. It may also
- tunnel non-IP protocols.
-
- PPTP Network Server (PNS)
-
- A PNS is envisioned to operate on general-purpose computing/server
- platforms. The PNS handles the server side of the PPTP protocol.
- Since PPTP relies completely on TCP/IP and is independent of the
- interface hardware, the PNS may use any combination of IP
- interface hardware including LAN and WAN devices.
-
- Session
-
- PPTP is connection-oriented. The PNS and PAC maintain state for
- each user that is attached to a PAC. A session is created when
- end-to-end PPP connection is attempted between a dial user and the
- PNS. The datagrams related to a session are sent over the tunnel
- between the PAC and PNS.
-
- Tunnel
-
- A tunnel is defined by a PNS-PAC pair. The tunnel protocol is
- defined by a modified version of GRE [1,2]. The tunnel carries
- PPP datagrams between the PAC and the PNS. Many sessions are
- multiplexed on a single tunnel. A control connection operating
- over TCP controls the establishment, release, and maintenance of
- sessions and of the tunnel itself.
-
-1.3. Protocol Overview
-
- There are two parallel components of PPTP: 1) a Control Connection
- between each PAC-PNS pair operating over TCP and 2) an IP tunnel
- operating between the same PAC-PNS pair which is used to transport
- GRE encapsulated PPP packets for user sessions between the pair.
-
-
-
-Hamzeh, et al. Informational [Page 6]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-1.3.1. Control Connection Overview
-
- Before PPP tunneling can occur between a PAC and PNS, a control
- connection must be established between them. The control connection
- is a standard TCP session over which PPTP call control and management
- information is passed. The control session is logically associated
- with, but separate from, the sessions being tunneled through a PPTP
- tunnel. For each PAC-PNS pair both a tunnel and a control connection
- exist. The control connection is responsible for establishment,
- management, and release of sessions carried through the tunnel. It is
- the means by which a PNS is notified of an incoming call at an
- associated PAC, as well as the means by which a PAC is instructed to
- place an outgoing dial call.
-
- A control connection can be established by either the PNS or the PAC.
- Following the establishment of the required TCP connection, the PNS
- and PAC establish the control connection using the Start-Control-
- Connection-Request and -Reply messages. These messages are also used
- to exchange information about basic operating capabilities of the PAC
- and PNS. Once the control connection is established, the PAC or PNS
- may initiate sessions by requesting outbound calls or responding to
- inbound requests. The control connection may communicate changes in
- operating characteristics of an individual user session with a Set-
- Link-Info message. Individual sessions may be released by either the
- PAC or PNS, also through Control Connection messages.
-
- The control connection itself is maintained by keep-alive echo
- messages. This ensures that a connectivity failure between the PNS
- and the PAC can be detected in a timely manner. Other failures can be
- reported via the
-
- Wan-Error-Notify message, also on the control connection.
-
- It is intended that the control connection will also carry management
- related messages in the future, such as a message allowing the PNS to
- request the status of a given PAC; these message types have not yet
- been defined.
-
-1.3.2. Tunnel Protocol Overview
-
- PPTP requires the establishment of a tunnel for each communicating
- PNS-PAC pair. This tunnel is used to carry all user session PPP
- packets for sessions involving a given PNS-PAC pair. A key which is
- present in the GRE header indicates which session a particular PPP
- packet belongs to.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 7]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- In this manner, PPP packets are multiplexed and demultiplexed over a
- single tunnel between a given PNS-PAC pair. The value to use in the
- key field is established by the call establishment procedure which
- takes place on the control connection.
-
- The GRE header also contains acknowledgment and sequencing
- information that is used to perform some level of congestion-control
- and error detection over the tunnel. Again the control connection is
- used to determine rate and buffering parameters that are used to
- regulate the flow of PPP packets for a particular session over the
- tunnel. PPTP does not specify the particular algorithms to use for
- congestion-control and flow-control. Suggested algorithms for the
- determination of adaptive time-outs to recover from dropped data or
- acknowledgments on the tunnel are included in section 4.4 of this
- document.
-
-1.4. Message Format and Protocol Extensibility
-
- PPTP defines a set of messages sent as TCP data on the control
- connection between a PNS and a given PAC. The TCP session for the
- control connection is established by initiating a TCP connection to
- port 1723 [6]. The source port is assigned to any unused port number.
-
- Each PPTP Control Connection message begins with an 8 octet fixed
- header portion. This fixed header contains the following: the total
- length of the message, the PPTP Message Type indicator, and a "Magic
- Cookie".
-
- Two Control Connection message types are indicated by the PPTP
- Message Type field:
-
- 1 - Control Message
- 2 - Management Message
-
- Management messages are currently not defined.
-
- The Magic Cookie is always sent as the constant 0x1A2B3C4D. Its
- basic purpose is to allow the receiver to ensure that it is properly
- synchronized with the TCP data stream. It should not be used as a
- means for resynchronizing the TCP data stream in the event that a
- transmitter issues an improperly formatted message. Loss of
- synchronization must result in immediate closing of the control
- connection's TCP session.
-
- For clarity, all Control Connection message templates in the next
- section include the entire PPTP Control Connection message header.
- Numbers preceded by 0x are hexadecimal values.
-
-
-
-
-Hamzeh, et al. Informational [Page 8]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-The currently defined Control Messages, grouped by function, are:
-
- Control Message Message Code
-
- (Control Connection Management)
-
- Start-Control-Connection-Request 1
- Start-Control-Connection-Reply 2
- Stop-Control-Connection-Request 3
- Stop-Control-Connection-Reply 4
- Echo-Request 5
- Echo-Reply 6
-
- (Call Management)
-
- Outgoing-Call-Request 7
- Outgoing-Call-Reply 8
- Incoming-Call-Request 9
- Incoming-Call-Reply 10
- Incoming-Call-Connected 11
- Call-Clear-Request 12
- Call-Disconnect-Notify 13
-
- (Error Reporting)
-
- WAN-Error-Notify 14
-
- (PPP Session Control)
-
- Set-Link-Info 15
-
- The Start-Control-Connection-Request and -Reply messages determine
- which version of the Control Connection protocol will be used. The
- version number field carried in these messages consists of a version
- number in the high octet and a revision number in the low octet.
- Version handling is described in section 2. The current value of the
- version number field is 0x0100 for version 1, revision 0.
-
- The use of the GRE-like header for the encapsulation of PPP user
- packets is specified in section 4.1.
-
- The MTU for the user data packets encapsulated in GRE is 1532 octets,
- not including the IP and GRE headers.
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 9]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-2. Control Connection Protocol Specification
-
- Control Connection messages are used to establish and clear user
- sessions. The first set of Control Connection messages are used to
- maintain the control connection itself. The control connection is
- initiated by either the PNS or PAC after they establish the
- underlying TCP connection. The procedure and configuration
- information required to determine which TCP connections are
- established is not covered by this protocol.
-
- The following Control Connection messages are all sent as user data
- on the established TCP connection between a given PNS-PAC pair. Note
- that care has been taken to ensure that all word (2 octet) and
- longword (4 octet) values begin on appropriate boundaries. All data
- is sent in network order (high order octets first). Any "reserved"
- fields MUST be sent as 0 values to allow for protocol extensibility.
-
-2.1. Start-Control-Connection-Request
-
- The Start-Control-Connection-Request is a PPTP control message used
- to establish the control connection between a PNS and a PAC. Each
- PNS-PAC pair requires a dedicated control connection to be
- established. A control connection must be established before any
- other PPTP messages can be issued. The establishment of the control
- connection can be initiated by either the PNS or PAC. A procedure
- which handles the occurrence of a collision between PNS and PAC
- Start-Control-Connection-Requests is described in section 3.1.3.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 10]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Protocol Version | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Capabilities |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Bearer Capabilities |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Maximum Channels | Firmware Revision |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Host Name (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Vendor String (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D. This constant value is used
- as a sanity check on received messages
- (see section 1.4).
-
- Control Message Type 1 for Start-Control-Connection-Request.
-
- Reserved0 This field MUST be 0.
-
- Protocol Version The version of the PPTP protocol that the
- sender wishes to use.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 11]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Framing Capabilities A set of bits indicating the type of framing
- that the sender of this message can provide.
- The currently defined bit settings are:
-
- 1 - Asynchronous Framing supported
-
- 2 - Synchronous Framing supported
-
- Bearer Capabilities A set of bits indicating the bearer
- capabilities that the sender of this message
- can provide. The currently defined bit
- settings are:
-
- 1 - Analog access supported
-
- 2 - Digital access supported
-
- Maximum Channels The total number of individual PPP sessions
- this PAC can support. In Start-Control-
- Connection-Requests issued by the PNS, this
- value SHOULD be set to 0. It MUST be
- ignored by the PAC.
-
- Firmware Revision This field contains the firmware revision
- number of the issuing PAC, when issued by
- the PAC, or the version of the PNS PPTP
- driver if issued by the PNS.
-
- Host Name A 64 octet field containing the DNS name of
- the issuing PAC or PNS. If less than 64
- octets in length, the remainder of this
- field SHOULD be filled with octets of value
- 0.
-
- Vendor Name A 64 octet field containing a vendor
- specific string describing the type of PAC
- being used, or the type of PNS software
- being used if this request is issued by the
- PNS. If less than 64 octets in length, the
- remainder of this field SHOULD be filled
- with octets of value 0.
-
-2.2. Start-Control-Connection-Reply
-
- The Start-Control-Connection-Reply is a PPTP control message sent in
- reply to a received Start-Control-Connection-Request message. This
- message contains a result code indicating the result of the control
- connection establishment attempt.
-
-
-
-Hamzeh, et al. Informational [Page 12]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Protocol Version | Result Code | Error Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Capability |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Bearer Capability |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Maximum Channels | Firmware Revision |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Host Name (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Vendor String (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 2 for Start-Control-Connection-Reply.
-
- Reserved0 This field MUST be 0.
-
- Protocol Version The version of the PPTP protocol that the
- sender wishes to use.
-
- Result Code Indicates the result of the command channel
- establishment attempt. Current valid Result
- Code values are:
-
- 1 - Successful channel establishment
-
- 2 - General error -- Error Code
- indicates the problem
-
-
-
-Hamzeh, et al. Informational [Page 13]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 3 - Command channel already exists;
-
- 4 - Requester is not authorized to
- establish a command channel
-
- 5 - The protocol version of the
- requester is not supported
-
- Error Code This field is set to 0 unless a "General
- Error" exists, in which case Result Code is
- set to 2 and this field is set to the value
- corresponding to the general error condition
- as specified in section 2.2.
-
- Framing Capabilities A set of bits indicating the type of framing
- that the sender of this message can provide.
- The currently defined bit settings are:
-
- 1 - Asynchronous Framing supported
-
- 2 - Synchronous Framing supported.
-
- Bearer Capabilities A set of bits indicating the bearer
- capabilities that the sender of this message
- can provide. The currently defined bit
- settings are:
-
- 1 - Analog access supported
-
- 2 - Digital access supported
-
- Maximum Channels The total number of individual PPP sessions
- this PAC can support. In a Start-Control-
- Connection-Reply issued by the PNS, this
- value SHOULD be set to 0 and it must be
- ignored by the PAC. The PNS MUST NOT use
- this value to try to track the remaining
- number of PPP sessions that the PAC will
- allow.
-
- Firmware Revision This field contains the firmware revision
- number of the issuing PAC, or the version of
- the PNS PPTP driver if issued by the PNS.
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 14]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Host Name A 64 octet field containing the DNS name of
- the issuing PAC or PNS. If less than 64
- octets in length, the remainder of this
- field SHOULD be filled with octets of value
- 0.
-
- Vendor Name A 64 octet field containing a vendor
- specific string describing the type of PAC
- being used, or the type of PNS software
- being used if this request is issued by the
- PNS. If less than 64 octets in length, the
- remainder of this field SHOULD be filled
- with octets of value 0.
-
-2.3. Stop-Control-Connection-Request
-
- The Stop-Control-Connection-Request is a PPTP control message sent by
- one peer of a PAC-PNS control connection to inform the other peer
- that the control connection should be closed. In addition to closing
- the control connection, all active user calls are implicitly cleared.
- The reason for issuing this request is indicated in the Reason field.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Reason | Reserved1 | Reserved2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 3 for Stop-Control-Connection-Request.
-
- Reserved0 This field MUST be 0.
-
- Reason Indicates the reason for the control
- connection being closed. Current valid
- Reason values are:
-
-
-
-Hamzeh, et al. Informational [Page 15]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 1 (None) - General request to clear
- control connection
-
- 2 (Stop-Protocol) - Can't support
- peer's version of the protocol
-
- 3 (Stop-Local-Shutdown) - Requester is
- being shut down
-
- Reserved1, Reserved2 These fields MUST be 0.
-
-2.4. Stop-Control-Connection-Reply
-
- The Stop-Control-Connection-Reply is a PPTP control message sent by
- one peer of a PAC-PNS control connection upon receipt of a Stop-
- Control-Connection-Request from the other peer.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 4 for Stop-Control-Connection-Reply.
-
- Reserved0 This field MUST be 0.
-
- Result Code Indicates the result of the attempt to close
- the control connection. Current valid Result
- Code values are:
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 16]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 1 (OK) - Control connection closed
-
- 2 (General Error) - Control connection
- not closed for reason indicated in
- Error Code
-
- Error Code This field is set to 0 unless a "General
- Error" exists, in which case Result Code is
- set to 2 and this field is set to the value
- corresponding to the general error condition
- as specified in section 2.2.
-
- Reserved1 This field MUST be 0.
-
-2.5. Echo-Request
-
- The Echo-Request is a PPTP control message sent by either peer of a
- PAC-PNS control connection. This control message is used as a "keep-
- alive" for the control connection. The receiving peer issues an
- Echo-Reply to each Echo-Request received. As specified in section
- 3.1.4, if the sender does not receive an Echo-Reply in response to an
- Echo-Request, it will eventually clear the control connection.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 5 for Echo-Request.
-
- Reserved0 This field MUST be 0.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 17]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Identifier A value set by the sender of the Echo-
- Request that is used to match the reply with
- the corresponding request.
-
-2.6. Echo-Reply
-
- The Echo-Reply is a PPTP control message sent by either peer of a
- PAC-PNS control connection in response to the receipt of an Echo-
- Request.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 6 for Echo-Reply.
-
- Reserved0 This field MUST be 0.
-
- Identifier The contents of the identify field from the
- received Echo-Request is copied to this
- field.
-
- Result Code Indicates the result of the receipt of the
- Echo-Request. Current valid Result Code
- values are:
-
- 1 (OK) - The Echo-Reply is valid
-
- 2 (General Error) - Echo-Request not
- accepted for the reason indicated in
- Error Code
-
-
-
-Hamzeh, et al. Informational [Page 18]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- section 2.2.
-
- Reserved1 This field MUST be 0.
-
-2.7. Outgoing-Call-Request
-
- The Outgoing-Call-Request is a PPTP control message sent by the PNS
- to the PAC to indicate that an outbound call from the PAC is to be
- established. This request provides the PAC with information required
- to make the call. It also provides information to the PAC that is
- used to regulate the transmission of data to the PNS for this session
- once it is established.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 19]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Call Serial Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Minimum BPS |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Maximum BPS |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Bearer Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Recv. Window Size | Packet Processing Delay |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Phone Number Length | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Phone Number (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Subaddress (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 7 for Outgoing-Call-Request.
-
- Reserved0 This field MUST be 0.
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 20]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Call ID A unique identifier, unique to a particular
- PAC-PNS pair assigned by the PNS to this
- session. It is used to multiplex and
- demultiplex data sent over the tunnel
- between the PNS and PAC involved in this
- session.
-
- Call Serial Number An identifier assigned by the PNS to this
- session for the purpose of identifying this
- particular session in logged session
- information. Unlike the Call ID, both the
- PNS and PAC associate the same Call Serial
- Number with a given session. The combination
- of IP address and call serial number SHOULD
- be unique.
-
- Minimum BPS The lowest acceptable line speed (in
- bits/second) for this session.
-
- Maximum BPS The highest acceptable line speed (in
- bits/second) for this session.
-
- Bearer Type A value indicating the bearer capability
- required for this outgoing call. The
- currently defined values are:
-
- 1 - Call to be placed on an analog
- channel
-
- 2 - Call to be placed on a digital
- channel
-
- 3 - Call can be placed on any type of
- channel
-
- Framing Type A value indicating the type of PPP framing
- to be used for this outgoing call.
-
- 1 - Call to use Asynchronous framing
-
- 2 - Call to use Synchronous framing
-
- 3 - Call can use either type of
- framing
-
- Packet Recv. Window Size The number of received data packets the PNS
- will buffer for this session.
-
-
-
-
-Hamzeh, et al. Informational [Page 21]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Packet Processing Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PNS from the PAC. This value is specified
- in units of 1/10 seconds. For the PNS this
- number should be very small. See section
- 4.4 for a description of how this value is
- determined and used.
-
- Phone Number Length The actual number of valid digits in the
- Phone Number field.
-
- Reserved1 This field MUST be 0.
-
- Phone Number The number to be dialed to establish the
- outgoing session. For ISDN and analog calls
- this field is an ASCII string. If the Phone
- Number is less than 64 octets in length, the
- remainder of this field is filled with
- octets of value 0.
-
- Subaddress A 64 octet field used to specify additional
- dialing information. If the subaddress is
- less than 64 octets long, the remainder of
- this field is filled with octets of value 0.
-
-2.8. Outgoing-Call-Reply
-
- The Outgoing-Call-Reply is a PPTP control message sent by the PAC to
- the PNS in response to a received Outgoing-Call-Request message. The
- reply indicates the result of the outgoing call attempt. It also
- provides information to the PNS about particular parameters used for
- the call. It provides information to allow the PNS to regulate the
- transmission of data to the PAC for this session.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 22]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Peer's Call ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Cause Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Connect Speed |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Recv. Window Size | Packet Processing Delay |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Physical Channel ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 8 for Outgoing-Call-Reply.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier for the tunnel, assigned
- by the PAC to this session. It is used to
- multiplex and demultiplex data sent over the
- tunnel between the PNS and PAC involved in
- this session.
-
- Peer's Call ID This field is set to the value received in
- the Call ID field of the corresponding
- Outgoing-Call-Request message. It is used
- by the PNS to match the Outgoing-Call-Reply
- with the Outgoing-Call-Request it issued. It
- also is used as the value sent in the GRE
- header for mux/demuxing.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 23]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Result Code This value indicates the result of the
- Outgoing-Call-Request attempt. Currently
- valid values are:
-
- 1 (Connected) - Call established with
- no errors
-
- 2 (General Error) - Outgoing Call not
- established for the reason indicated
- in Error Code
-
- 3 (No Carrier) - Outgoing Call failed
- due to no carrier detected
-
- 4 (Busy) - Outgoing Call failed due to
- detection of a busy signal
-
- 5 (No Dial Tone) - Outgoing Call
- failed due to lack of a dial tone
-
- 6 (Time-out) - Outgoing Call was not
- established within time allotted by
- PAC
-
- 7 (Do Not Accept) - Outgoing Call
- administratively prohibited
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- section 2.2.
-
- Cause Code This field gives additional failure
- information. Its value can vary depending
- upon the type of call attempted. For ISDN
- call attempts it is the Q.931 cause code.
-
- Connect Speed The actual connection speed used, in
- bits/second.
-
- Packet Recv. Window Size The number of received data packets the PAC
- will buffer for this session.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 24]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Packet Processing Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PAC from the PNS. This value is specified
- in units of 1/10 seconds. For the PAC, this
- number is related to the size of the buffer
- used to hold packets to be sent to the
- client and to the speed of the link to the
- client. This value should be set to the
- maximum delay that can normally occur
- between the time a packet arrives at the PAC
- and is delivered to the client. See section
- 4.4 for an example of how this value is
- determined and used.
-
- Physical Channel ID This field is set by the PAC in a vendor-
- specific manner to the physical channel
- number used to place this call. It is used
- for logging purposes only.
-
-2.9. Incoming-Call-Request
-
- The Incoming-Call-Request is a PPTP control message sent by the PAC
- to the PNS to indicate that an inbound call is to be established from
- the PAC. This request provides the PNS with parameter information
- for the incoming call.
-
- This message is the first in the "three-way handshake" used by PPTP
- for establishing incoming calls. The PAC may defer answering the
- call until it has received an Incoming-Call-Reply from the PNS
- indicating that the call should be established. This mechanism allows
- the PNS to obtain sufficient information about the call before it is
- answered to determine whether the call should be answered or not.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 25]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Call Serial Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call Bearer Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Physical Channel ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Dialed Number Length | Dialing Number Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Dialed Number (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Dialing Number (64 octets) +
- |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Subaddress (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 9 for Incoming-Call-Request.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier for this tunnel,
- assigned by the PAC to this session. It is
- used to multiplex and demultiplex data sent
- over the tunnel between the PNS and PAC
- involved in this session.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 26]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Call Serial Number An identifier assigned by the PAC to this
- session for the purpose of identifying this
- particular session in logged session
- information. Unlike the Call ID, both the
- PNS and PAC associate the same Call Serial
- Number to a given session. The combination
- of IP address and call serial number should
- be unique.
-
- Bearer Type A value indicating the bearer capability
- used for this incoming call. Currently
- defined values are:
-
- 1 - Call is on an analog channel
-
- 2 - Call is on a digital channel
-
- Physical Channel ID This field is set by the PAC in a vendor-
- specific manner to the number of the
- physical channel this call arrived on.
-
- Dialed Number Length The actual number of valid digits in the
- Dialed Number field.
-
- Dialing Number Length The actual number of valid digits in the
- Dialing Number field.
-
- Dialed Number The number that was dialed by the caller.
- For ISDN and analog calls this field is an
- ASCII string. If the Dialed Number is less
- than 64 octets in length, the remainder of
- this field is filled with octets of value 0.
-
- Dialing Number The number from which the call was placed.
- For ISDN and analog calls this field is an
- ASCII string. If the Dialing Number is less
- than 64 octets in length, the remainder of
- this field is filled with octets of value 0.
-
- Subaddress A 64 octet field used to specify additional
- dialing information. If the subaddress is
- less than 64 octets long, the remainder of
- this field is filled with octets of value 0.
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 27]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-2.10. Incoming-Call-Reply
-
- The Incoming-Call-Reply is a PPTP control message sent by the PNS to
- the PAC in response to a received Incoming-Call-Request message. The
- reply indicates the result of the incoming call attempt. It also
- provides information to allow the PAC to regulate the transmission of
- data to the PNS for this session.
-
- This message is the second in the three-way handshake used by PPTP
- for establishing incoming calls. It indicates to the PAC whether the
- call should be answered or not.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Peer's Call ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Packet Recv. Window Size |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Transmit Delay | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 10 for Incoming-Call-Reply.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier for this tunnel assigned
- by the PNS to this session. It is used to
- multiplex and demultiplex data sent over the
- tunnel between the PNS and PAC involved in
- this session.
-
- Peer's Call ID This field is set to the value received in
- the Call ID field of the corresponding
- Incoming-Call-Request message. It is used by
-
-
-
-Hamzeh, et al. Informational [Page 28]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- the PAC to match the Incoming-Call-Reply
- with the Incoming-Call-Request it issued.
- This value is included in the GRE header of
- transmitted data packets for this session.
-
- Result Code This value indicates the result of the
- Incoming-Call-Request attempt. Current
- valid Result Code values are:
-
- 1 (Connect) - The PAC should answer
- the incoming call
-
- 2 (General Error) - The Incoming Call
- should not be established due to the
- reason indicated in Error Code
-
- 3 (Do Not Accept) - The PAC should not
- accept the incoming call. It should
- hang up or issue a busy indication
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- section 2.2.
-
- Packet Recv. Window Size The number of received data packets the PAC
- will buffer for this session.
-
- Packet Transmit Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PAC from the PNS. This value is specified
- in units of 1/10 seconds.
-
- Reserved1 This field MUST be 0.
-
-2.11. Incoming-Call-Connected
-
- The Incoming-Call-Connected message is a PPTP control message sent by
- the PAC to the PNS in response to a received Incoming-Call-Reply. It
- provides information to the PNS about particular parameters used for
- the call. It also provides information to allow the PNS to regulate
- the transmission of data to the PAC for this session.
-
- This message is the third in the three-way handshake used by PPTP for
- establishing incoming calls. It provides a mechanism for providing
- the PNS with additional information about the call that cannot, in
-
-
-
-Hamzeh, et al. Informational [Page 29]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- general, be obtained at the time the Incoming-Call-Request is issued
- by the PAC.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer's Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Connect Speed |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Recv. Window Size | Packet Transmit Delay |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 11 for Incoming-Call-Connected.
-
- Reserved0 This field MUST be 0.
-
- Peer's Call ID This field is set to the value received in
- the Call ID field of the corresponding
- Incoming-Call-Reply message. It is used by
- the PNS to match the Incoming-Call-Connected
- with the Incoming-Call-Reply it issued.
-
- Connect Speed The actual connection speed used, in
- bits/second.
-
- Packet Recv. Window Size The number of received data packets the PAC
- will buffer for this session.
-
- Packet Transmit Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PAC from the PNS. This value is specified
- in units of 1/10 seconds.
-
-
-
-Hamzeh, et al. Informational [Page 30]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Framing Type A value indicating the type of PPP framing
- being used by this incoming call.
-
- 1 - Call uses asynchronous framing
-
- 2 - Call uses synchronous framing
-
-2.12. Call-Clear-Request
-
- The Call-Clear-Request is a PPTP control message sent by the PNS to
- the PAC indicating that a particular call is to be disconnected. The
- call being cleared can be either an incoming or outgoing call, in any
- state. The PAC responds to this message with a Call-Disconnect-
- Notify message.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 12 for Call-Clear-Request.
-
- Reserved0 This field MUST be 0.
-
- Call ID The Call ID assigned by the PNS to this
- call. This value is used instead of the
- Peer's Call ID because the latter may not be
- known to the PNS if the call must be aborted
- during call establishment.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 31]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-2.13. Call-Disconnect-Notify
-
- The Call-Disconnect-Notify message is a PPTP control message sent by
- the PAC to the PNS. It is issued whenever a call is disconnected,
- due to the receipt by the PAC of a Call-Clear-Request or for any
- other reason. Its purpose is to inform the PNS of both the
- disconnection and the reason for it.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Result Code | Error Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Cause Code | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Call Statistics (128 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 13 for Call-Disconnect-Notify.
-
- Reserved0 This field MUST be 0.
-
- Call ID The value of the Call ID assigned by the PAC
- to this call. This value is used instead of
- the Peer's Call ID because the latter may
- not be known to the PNS if the call must be
- aborted during call establishment.
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 32]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Result Code This value indicates the reason for the
- disconnect. Current valid Result Code values
- are:
-
- 1 (Lost Carrier) - Call disconnected
- due to loss of carrier
-
- 2 (General Error) - Call disconnected
- for the reason indicated in Error
- Code
-
- 3 (Admin Shutdown) - Call disconnected
- for administrative reasons
-
- 4 (Request) - Call disconnected due to
- received Call-Clear-Request
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case the
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- section 2.2.
-
- Cause Code This field gives additional disconnect
- information. Its value varies depending on
- the type of call being disconnected. For
- ISDN calls it is the Q.931 cause code.
-
- Call Statistics This field is an ASCII string containing
- vendor-specific call statistics that can be
- logged for diagnostic purposes. If the
- length of the string is less than 128, the
- remainder of the field is filled with octets
- of value 0.
-
-2.14. WAN-Error-Notify
-
- The WAN-Error-Notify message is a PPTP control message sent by the
- PAC to the PNS to indicate WAN error conditions (conditions that
- occur on the interface supporting PPP). The counters in this message
- are cumulative. This message should only be sent when an error
- occurs, and not more than once every 60 seconds. The counters are
- reset when a new call is established.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 33]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer's Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | CRC Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Hardware Overruns |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Buffer Overruns |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time-out Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Alignment Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 14 for WAN-Error-Notify.
-
- Reserved0 This field MUST be 0.
-
- Peer's Call ID Th Call ID assigned by the PNS to this call.
-
- CRC Errors Number of PPP frames received with CRC
- errors since session was established.
-
- Framing Errors Number of improperly framed PPP packets
- received.
-
- Hardware Overruns Number of receive buffer over-runs since
- session was established.
-
- Buffer Overruns Number of buffer over-runs detected since
- session was established.
-
-
-
-Hamzeh, et al. Informational [Page 34]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Time-out Errors Number of time-outs since call was
- established.
-
- Alignment Errors Number of alignment errors since call was
- established.
-
-2.15. Set-Link-Info
-
- The Set-Link-Info message is a PPTP control message sent by the PNS
- to the PAC to set PPP-negotiated options. Because these options can
- change at any time during the life of the call, the PAC must be able
- to update its internal call information dynamically and perform PPP
- negotiation on an active PPP session.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer's Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Send ACCM |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Receive ACCM |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 15 for Set-Link-Info.
-
- Reserved0 This field MUST be 0.
-
- Peer's Call ID The value of the Call ID assigned by the PAC
- to this call.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 35]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Send ACCM The send ACCM value the client should use to
- process outgoing PPP packets. The default
- value used by the client until this message
- is received is 0XFFFFFFFF. See [7].
-
- Receive ACCM The receive ACCM value the client should use
- to process incoming PPP packets. The default
- value used by the client until this message
- is received is 0XFFFFFFFF. See [7].
-
-2.16. General Error Codes
-
- General error codes pertain to types of errors which are not specific
- to any particular PPTP request, but rather to protocol or message
- format errors. If a PPTP reply indicates in its Result Code that a
- general error occurred, the General Error value should be examined to
- determined what the error was. The currently defined General Error
- codes and their meanings are:
-
- 0 (None) - No general error
-
- 1 (Not-Connected) - No control connection exists yet for this
- PAC-PNS pair
-
- 2 (Bad-Format) - Length is wrong or Magic Cookie value is
- incorrect
-
- 3 (Bad-Value) - One of the field values was out of range or
- reserved field was non-zero
-
- 4 (No-Resource) - Insufficient resources to handle this command
- now
-
- 5 (Bad-Call ID) - The Call ID is invalid in this context
-
- 6 (PAC-Error) - A generic vendor-specific error occurred in
- the PAC
-
-3. Control Connection Protocol Operation
-
- This section describes the operation of various PPTP control
- connection functions and the Control Connection messages which are
- used to support them. The protocol operation of the control
- connection is simplified because TCP is used to provide a reliable
- transport mechanism. Ordering and retransmission of messages is not
- a concern at this level. The TCP connection itself, however, can
- close at any time and an appropriate error recovery mechanism must be
- provided to handle this case.
-
-
-
-Hamzeh, et al. Informational [Page 36]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Some error recovery procedures are common to all states of the
- control connection. If an expected reply does not arrive within 60
- seconds, the control connection is closed, unless otherwise
- specified. Appropriate logging should be implemented for easy
- determination of the problems and the reasons for closing the control
- connection.
-
- Receipt of an invalid or malformed Control Connection message should
- be logged appropriately, and the control connection should be closed
- and restarted to ensure recovery into a known state.
-
-3.1. Control Connection States
-
- The control connection relies on a standard TCP connection for its
- service. The PPTP control connection protocol is not distinguishable
- between the PNS and PAC, but is distinguishable between the
- originator and receiver. The originating peer is the one which first
- attempts the TCP open. Since either PAC or PNS may originate a
- connection, it is possible for a TCP collision to occur. See section
- 3.1.3 for a description of this situation.
-
-3.1.1. Control Connection Originator (may be PAC or PNS)
-
- TCP Open Indication
- /Send Start Control
- Connection Request +-----------------+
- +------------------------------------>| wait_ctl_reply |
- | +-----------------+
- | Collision/See (4.1.3) Close TCP V V V Receive Start Ctl
- | +-------------------------------+ | | Connection Reply
- | | | | Version OK
- ^ V | V
-+-----------------+ Receive Start Ctl | +-----------------+
-| idle | Connection Reply | | established |
-+-----------------+ Version Not OK | +-----------------+
- ^ | V Local Terminate
- | Receive Stop Control | | /Send Stop
- | Connection Request | | Control Request
- | /Send Stop Control Reply V V
- | Close TCP +-----------------+
- +-------------------------------------| wait_stop_reply |
- +-----------------+
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 37]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- idle
- The control connection originator attempts to open a TCP
- connection to the peer during idle state. When the TCP connection
- is open, the originator transmits a send Start-Control-
- Connection-Request and then enters the wait_ctl_reply state.
-
- wait_ctl_reply
- The originator checks to see if another TCP connection has been
- requested from the same peer, and if so, handles the collision
- situation described in section 3.1.3.
-
- When a Start-Control-Connection-Reply is received, it is examined
- for a compatible version. If the version of the reply is lower
- than the version sent in the request, the older (lower) version
- should be used provided it is supported. If the version in the
- reply is earlier and supported, the originator moves to the
- established state. If the version is earlier and not supported, a
- Stop-Control-Connection-Request SHOULD be sent to the peer and the
- originator moves into the wait_stop_reply state.
-
- established
- An established connection may be terminated by either a local
- condition or the receipt of a Stop-Control-Connection-Request. In
- the event of a local termination, the originator MUST send a
- Stop-Control-Connection-Request and enter the wait_stop_reply
- state.
-
- If the originator receives a Stop-Control-Connection-Request it
- SHOULD send a Stop-Control-Connection-Reply and close the TCP
- connection making sure that the final TCP information has been
- "pushed" properly.
-
- wait_stop_reply
- If a Stop-Control-Connection-Reply is received, the TCP connection
- SHOULD be closed and the control connection becomes idle.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 38]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-3.1.2. Control connection Receiver (may be PAC or PNS)
-
-Receive Start Control Connection Request
-Version Not OK/Send Start Control Connection
-Reply with Error
- +--------+
- | | Receive Control Connection Request Version OK
- | | /Send Start Control Connection Reply
- | | +----------------------------------------+
- ^ V ^ V
-+-----------------+ Receive Start Ctl +-----------------+
-| Idle | Connection Request | Established |
-+-----------------+ /Send Stop Reply +-----------------+
- ^ ^ Close TCP V V Local Terminate
- | +-------------------------------------+ | /Send Stop
- | | Control Conn.
- | V Request
- | +-----------------+
- +-------------------------------------| Wait-Stop-Reply |
- Receive Stop Control +-----------------+
- Connection Reply
- /Close TCP
-
- idle
- The control connection receiver waits for a TCP open attempt on
- port 1723. When notified of an open TCP connection, it should
- prepare to receive PPTP messages. When a Start-Control-
- Connection-Request is received its version field should be
- examined. If the version is earlier than the receiver's version
- and the earlier version can be supported by the receiver, the
- receiver SHOULD send a Start-Control-Connection-Reply. If the
- version is earlier than the receiver's version and the version
- cannot be supported, the receiver SHOULD send a Start-Connection-
- Reply message, close the TCP connection and remain in the idle
- state. If the receiver's version is the same as earlier than the
- peer's, the receiver SHOULD send a Start-Control-Connection-Reply
- with the receiver's version and enter the established state.
-
- established
- An established connection may be terminated by either a local
- condition or the reception of a Stop-Control-Connection-Request.
- In the event of a local termination, the originator MUST send a
- Stop-Control-Connection-Request and enter the wait_stop_reply
- state.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 39]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- If the originator receives a Stop-Control-Connection-Request it
- SHOULD send a Stop-Control-Connection-Reply and close the TCP
- connection, making sure that the final TCP information has been
- "pushed" properly.
-
- wait_stop_reply
- If a Stop-Control-Connection-Reply is received, the TCP connection
- SHOULD be closed and the control connection becomes idle.
-
-3.1.3. Start Control Connection Initiation Request Collision
-
- A PAC and PNS must have only one control connection between them. It
- is possible, however, for a PNS and a PAC to simultaneously attempt
- to establish a control connection to each other. When a Start-
- Control-Connection-Request is received on one TCP connection and
- another Start-Control-Connection-Request has already been sent on
- another TCP connection to the same peer, a collision has occurred.
-
- The "winner" of the initiation race is the peer with the higher IP
- address (compared as 32 bit unsigned values, network number more
- significant). For example, if the peers 192.33.45.17 and 192.33.45.89
- collide, the latter will be declared the winner. The loser will
- immediately close the TCP connection it initiated, without sending
- any further PPTP control messages on it and will respond to the
- winner's request with a Start-Control-Connection-Reply message. The
- winner will wait for the Start-Control-Connection-Reply on the
- connection it initiated and also wait for a TCP termination
- indication on the connection the loser opened. The winner MUST NOT
- send any messages on the connection the loser initiated.
-
-3.1.4. Keep Alives and Timers
-
- A control connection SHOULD be closed by closing the underlying TCP
- connection under the following circumstances:
-
- 1. If a control connection is not in the established state (i.e.,
- Start-Control-Connection-Request and Start-Control-Connection-
- Reply have not been exchanged), a control connection SHOULD be
- closed after 60 seconds by a peer waiting for a Start-Control-
- Connection-Request or Start-Control-Connection-Reply message.
-
- 2. If a peer's control connection is in the established state and has
- not received a control message for 60 seconds, it SHOULD send a
- Echo-Request message. If an Echo-Reply is not received 60 seconds
- after the Echo-Request message transmission, the control
- connection SHOULD be closed.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 40]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-3.2. Call States
-
-3.2.1. Timing considerations
-
- Because of the real-time nature of telephone signaling, both the PNS
- and PAC should be implemented with multi-threaded architectures such
- that messages related to multiple calls are not serialized and
- blocked. The transit delay between the PAC and PNS should not exceed
- one second. The call and connection state figures do not specify
- exceptions caused by timers. The implicit assumption is that since
- the TCP-based control connection is being verified with keep-alives,
- there is less need to maintain strict timers for call control
- messages.
-
- Establishing outbound international calls, including the modem
- training and negotiation sequences, may take in excess of 1 minute so
- the use of short timers is discouraged.
-
- If a state transition does not occur within 1 minute (except for
- connections in the idle or established states), the integrity of the
- protocol processing between the peers is suspect and the ENTIRE
- CONTROL CONNECTION should be closed and restarted. All Call IDs are
- logically released whenever a control connection is started. This
- presumably also helps in preventing toll calls from being "lost" and
- never cleared.
-
-3.2.2. Call ID Values
-
- Each peer assigns a Call ID value to each user session it requests or
- accepts. This Call ID value MUST be unique for the tunnel between the
- PNS and PAC to which it belongs. Tunnels to other peers can use the
- same Call ID number so the receiver of a packet on a tunnel needs to
- associate a user session with a particular tunnel and Call ID. It is
- suggested that the number of potential Call ID values for each tunnel
- be at least twice as large as the maximum number of calls expected on
- a given tunnel.
-
- A session is defined by the triple (PAC, PNS, Call ID).
-
-3.2.3. Incoming Calls
-
- An Incoming-Call-Request message is generated by the PAC when an
- associated telephone line rings. The PAC selects a Call ID and serial
- number and indicates the call bearer type. Modems should always
- indicate analog call type. ISDN calls should indicate digital when
- unrestricted digital service or rate adaption is used and analog if
-
-
-
-
-
-Hamzeh, et al. Informational [Page 41]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- digital modems are involved. Dialing number, dialed number, and
- subaddress may be included in the message if they are available from
- the telephone network.
-
- Once the PAC sends the Incoming-Call-Request, it waits for a response
- from the PNS but does not answer the call from the telephone network.
- The PNS may choose not to accept the call if:
-
- - No resources are available to handle more sessions
-
- - The dialed, dialing, or subaddress fields are not indicative of
- an authorized user
-
- - The bearer service is not authorized or supported
-
- If the PNS chooses to accept the call, it responds with an Incoming-
- Call-Reply which also indicates window sizes (see section 4.2). When
- the PAC receives the Outgoing-Call-Reply, it attempts to connect the
- call, assuming the calling party has not hung up. A final call
- connected message from the PAC to the PNS indicates that the call
- states for both the PAC and the PNS should enter the established
- state.
-
- When the dialed-in client hangs up, the call is cleared normally and
- the PAC sends a Call-Disconnect-Notify message. If the PNS wishes to
- clear a call, it sends a Call-Clear-Request message and then waits
- for a Call-Disconnect-Notify.
-
-3.2.3.1. PAC Incoming Call States
-
- Ring/Send Incoming Call Request +-----------------+
- +----------------------------------------->| wait_reply |
- | +-----------------+
- | Receive Incoming Call Reply V V V
- | Not Accepting | | | Receive Incoming
- | +--------------------------------+ | | Call Reply Accept-
- | | +------------------------------+ | ing/Answer call;
- | | | Abort/Send Call | Send Call
- ^ V V Disconnect Notify V Connected
-+-----------------+ +-----------------+
-| idle |<-----------------------------| established |
-+-----------------+ Receive Clear Call Request +-----------------+
- or telco call dropped
- or local disconnect
- /Send Call Disconnect Notify
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 42]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-The states associated with the PAC for incoming calls are:
-
- idle
- The PAC detects an incoming call on one of its telco interfaces.
- Typically this means an analog line is ringing or an ISDN TE has
- detected an incoming Q.931 SETUP message. The PAC sends an
- Incoming-Call-Request message and moves to the wait_reply state.
-
- wait_reply
- The PAC receives an Incoming-Call-Reply message indicating non-
- willingness to accept the call (general error or don't accept) and
- moves back into the idle state. If the reply message indicates
- that the call is accepted, the PAC sends an Incoming-Call-
- Connected message and enters the established state.
-
- established
- Data is exchanged over the tunnel. The call may be cleared
- following:
-
- An event on the telco connection. The PAC sends a
- Call-Disconnect-Notify message
-
- Receipt of a Call-Clear-Request. The PAC sends a
- Call-Disconnect-Notify message
-
- A local reason. The PAC sends a Call-Disconnect-Notify message.
-
-3.2.3.2. PNS Incoming Call States
-
- Receive Incoming Call Request
- /Send Incoming Call Reply +-----------------+
- Not Accepting if Error | Wait-Connect |
- +-----+ +-----------------+
- | | Receive Incoming Call Req. ^ V V
- | | /Send Incoming Call Reply OK | | | Receive Incoming
- | | +--------------------------------+ | | Call Connect
- ^ V ^ V------------------------------+ V
-+-----------------+ Receive Call Disconnect +-----------------+
-| Idle | Notify +- | Established |
-+-----------------+ | +-----------------+
- ^ ^ | V Local Terminate
- | +----------------------------+ | /Send Call Clear
- | Receive Call Disconnect | Request
- | Notify V
- | +-----------------+
- +--------------------------------------| Wait-Disconnect |
- Receive Call Disconnect +-----------------+
- Notify
-
-
-
-Hamzeh, et al. Informational [Page 43]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-The states associated with the PNS for incoming calls are:
-
- idle
- An Incoming-Call-Request message is received. If the request is
- not acceptable, an Incoming-Call-Reply is sent back to the PAC and
- the PNS remains in the idle state. If the Incoming-Call-Request
- message is acceptable, an Incoming-Call-Reply is sent indicating
- accept in the result code. The session moves to the wait_connect
- state.
-
- wait_connect
- If the session is connected on the PAC, the PAC sends an incoming
- call connect message to the PNS which then moves into established
- state. The PAC may send a Call-Disconnect-Notify to indicate that
- the incoming caller could not be connected. This could happen,
- for example, if a telephone user accidently places a standard
- voice call to a PAC resulting in a handshake failure on the called
- modem.
-
- established
- The session is terminated either by receipt of a Call-Disconnect-
- Notify message from the PAC or by sending a Call-Clear-Request.
- Once a Call-Clear-Request has been sent, the session enters the
- wait_disconnect state.
-
- wait_disconnect
- Once a Call-Disconnect-Notify is received the session moves back
- to the idle state.
-
-3.2.4. Outgoing Calls
-
- Outgoing messages are initiated by a PNS and instruct a PAC to place
- a call on a telco interface. There are only two messages for outgoing
- calls: Outgoing-Call-Request and Outgoing-Call-Reply. The PNS sends
- an Outgoing-Call-Request specifying the dialed party phone number and
- subaddress as well as speed and window parameters. The PAC MUST
- respond to the Outgoing-Call-Request message with an Outgoing-Call-
- Reply message once the PAC determines that:
-
- The call has been successfully connected
-
- A call failure has occurred for reasons such as: no interfaces are
- available for dial-out, the called party is busy or does not
- answer, or no dial tone is detected on the interface chosen for
- dialing
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 44]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-3.2.4.1. PAC Outgoing Call States
-
-Receive Outgoing Call Request in Error
-/Send Outgoing Call Reply with Error
- |--------+
- | | Receive Outgoing Call Request No Error
- | | /Off Hook; Dial
- | | +-----------------------------------------
- ^ V ^ V
-+-----------------+ Incomplete Call +-----------------+
-| idle | /Send Outgoing Call | wait_cs_ans |
-+-----------------+ Reply with Error +-----------------+
- ^ ^ or Recv. Call Clear Req. V V Telco Answer
- | | /Send Disconnect Notify| | /Send Outgoing
- | +-------------------------------------+ | Call Reply.
- | V
- | +-----------------+
- +-------------------------------------| established |
- Receive Call Clear Request +-----------------+
- or local terminate
- or telco disconnect
- /Hangup call and send
- Call Disconnect Notify
-
- The states associated with the PAC for outgoing calls are:
-
- idle
- Received Outgoing-Call-Request. If this is received in error,
- respond with an Outgoing-Call-Reply with error condition set.
- Otherwise, allocate physical channel to dial on. Place the
- outbound call, wait for a connection, and move to the wait_cs_ans
- state.
-
- wait_cs_ans
- If the call is incomplete, send an Outgoing-Call-Reply with a
- non-zero Error Code. If a timer expires on an outbound call, send
- back an Outgoing-Call-Reply with a non-zero Error Code. If a
- circuit switched connection is established, send an Outgoing-
- Call-Reply indicating success.
-
- established
- If a Call-Clear-Request is received, the telco call SHOULD be
- released via appropriate mechanisms and a Call-Disconnect-Notify
- message SHOULD BE sent to the PNS. If the call is disconnected by
- the client or by the telco interface, a Call-Disconnect-Notify
- message SHOULD be sent to the PNS.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 45]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-3.2.4.2. PNS Outgoing Call States
-
- Open Indication Abort/Send
- /Send Outgoing Call Call Clear
- Request +-----------------+Request
- +-------------------------------->| Wait-Reply |----------+
- | +-----------------+ |
- | Receive Outgoing Call Reply V V Receive Outgoing |
- | with Error | | Call Reply |
- | +-------------------------------+ | No Error |
- ^ V V |
-+-----------------+ +-----------------+ |
-| Idle |<-----------------------------| Established | |
-+-----------------+ Receive Call Disconnect +-----------------+ |
- ^ Notify V Local Terminate |
- | | /Send Call Clear |
- | | Request |
- | Receive Call Disconnect V |
- | Notify +-----------------+ |
- +---------------------------------| Wait-Disconnect |<---------+
- +-----------------+
-
-The states associated with the PNS for outgoing calls are:
-
- idle
- An Outgoing-Call-Request message is sent to the PAC and the
- session moves into the wait_reply state.
-
- wait_reply
- An Outgoing-Call-Reply is received which indicates an error. The
- session returns to idle state. No telco call is active. If the
- Outgoing-Call-Reply does not indicate an error, the telco call is
- connected and the session moves to the established state.
-
- established
- If a Call-Disconnect-Notify is received, the telco call has been
- terminated for the reason indicated in the Result and Cause Codes.
- The session moves back to the idle state. If the PNS chooses to
- terminate the session, it sends a Call-Clear-Request to the PAC
- and then enters the wait_disconnect state.
-
- wait_disconnect
- A session disconnection is waiting to be confirmed by the PAC.
- Once the PNS receives the Call-Disconnect-Notify message, the
- session enters idle state.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 46]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-4. Tunnel Protocol Operation
-
- The user data carried by the PPTP protocol are PPP data packets. PPP
- packets are carried between the PAC and PNS, encapsulated in GRE
- packets which in turn are carried over IP. The encapsulated PPP
- packets are essentially PPP data packets less any media specific
- framing elements. No HDLC flags, bit insertion, control characters,
- or control character escapes are included. No CRCs are sent through
- the tunnel. The IP packets transmitted over the tunnels between a PAC
- and PNS has the following general structure:
-
- +--------------------------------+
- | Media Header |
- +--------------------------------+
- | IP Header |
- +--------------------------------+
- | GRE Header |
- +--------------------------------+
- | PPP Packet |
- +--------------------------------+
-
-4.1. Enhanced GRE header
-
- The GRE header used in PPTP is enhanced slightly from that specified
- in the current GRE protocol specification [1,2]. The main difference
- involves the definition of a new Acknowledgment Number field, used to
- determine if a particular GRE packet or set of packets has arrived at
- the remote end of the tunnel. This Acknowledgment capability is not
- used in conjunction with any retransmission of user data packets. It
- is used instead to determine the rate at which user data packets are
- to be transmitted over the tunnel for a given user session. The
- format of the enhanced GRE header is as follows:
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |C|R|K|S|s|Recur|A| Flags | Ver | Protocol Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key (HW) Payload Length | Key (LW) Call ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Sequence Number (Optional) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Acknowledgment Number (Optional) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 47]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- C
- (Bit 0) Checksum Present. Set to zero (0).
-
- R
- (Bit 1) Routing Present. Set to zero (0).
-
- K
- (Bit 2) Key Present. Set to one (1).
- S
- (Bit 3) Sequence Number Present. Set to one (1) if a payload
- (data) packet is present. Set to zero (0) if payload is not
- present (GRE packet is an Acknowledgment only).
-
- s
- (Bit 4) Strict source route present. Set to zero (0).
-
- Recur
- (Bits 5-7) Recursion control. Set to zero (0).
-
- A
- (Bit 8) Acknowledgment sequence number present. Set to one (1) if
- packet contains Acknowledgment Number to be used for acknowledging
- previously transmitted data.
-
- Flags
- (Bits 9-12) Must be set to zero (0).
-
- Ver
- (Bits 13-15) Must contain 1 (enhanced GRE).
-
- Protocol Type
- Set to hex 880B [8].
-
- Key
- Use of the Key field is up to the implementation. PPTP uses it as
- follows:
- Payload Length
- (High 2 octets of Key) Size of the payload, not including
- the GRE header
-
- Call ID
- (Low 2 octets) Contains the Peer's Call ID for the session
- to which this packet belongs.
-
- Sequence Number
- Contains the sequence number of the payload. Present if S
- bit (Bit 3) is one (1).
-
-
-
-
-Hamzeh, et al. Informational [Page 48]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Acknowledgment Number
- Contains the sequence number of the highest numbered GRE
- packet received by the sending peer for this user session.
- Present if A bit (Bit 8) is one (1).
-
- The payload section contains a PPP data packet without any
- media specific framing elements.
-
- The sequence numbers involved are per packet sequence numbers.
- The sequence number for each user session is set to zero at
- session startup. Each packet sent for a given user session
- which contains a payload (and has the S bit (Bit 3) set to one)
- is assigned the next consecutive sequence number for that
- session.
-
- This protocol allows acknowledgments to be carried with the
- data and makes the overall protocol more efficient, which in
- turn requires less buffering of packets.
-
-4.2. Sliding Window Protocol
-
- The sliding window protocol used on the PPTP data path is used for
- flow control by each side of the data exchange. The enhanced GRE
- protocol allows packet acknowledgments to be piggybacked on data
- packets. Acknowledgments can also be sent separately from data
- packets. Again, the main purpose of the sliding window protocol is
- for flow control--retransmissions are not performed by the tunnel
- peers.
-
-4.2.1. Initial Window Size
-
- Although each side has indicated the maximum size of its receive
- window, it is recommended that a conservative approach be taken when
- beginning to transmit data. The initial window size on the
- transmitter is set to half the maximum size the receiver requested,
- with a minimum size of one packet. The transmitter stops sending
- packets when the number of packets awaiting acknowledgment is equal
- to the current window size. As the receiver successfully digests
- each window, the window size on the transmitter is bumped up by one
- packet until the maximum is reached. This method prevents a system
- from flooding an already congested network because no history has
- been established.
-
-4.2.2. Closing the Window
-
- When a time-out does occur on a packet, the sender adjusts the size
- of the transmit window down to one half its value when it failed.
- Fractions are rounded up, and the minimum window size is one.
-
-
-
-Hamzeh, et al. Informational [Page 49]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-4.2.3. Opening the Window
-
- With every successful transmission of a window's worth of packets
- without a time-out, the transmit window size is increased by one
- packet until it reaches the maximum window size that was sent by the
- other side when the call was connected. As stated earlier, no
- retransmission is done on a time-out. After a time-out, the
- transmission resumes with the window starting at one half the size of
- the transmit window when the time-out occurred and adjusting upward
- by one each time the transmit window is filled with packets that are
- all acknowledged without time-outs.
-
-4.2.4. Window Overflow
-
- When a receiver's window overflows with too many incoming packets,
- excess packets are thrown away. This situation should not arise if
- the sliding window procedures are being properly followed by the
- transmitter and receiver. It is assumed that, on the transmit side,
- packets are buffered for transmission and are no longer accepted from
- the packet source when the transmit buffer fills.
-
-4.2.5. Multi-packet Acknowledgment
-
- One feature of the PPTP sliding window protocol is that it allows the
- acknowledgment of multiple packets with a single acknowledgment. All
- outstanding packets with a sequence number lower or equal to the
- acknowledgment number are considered acknowledged. Time-out
- calculations are performed using the time the packet corresponding to
- the highest sequence number being acknowledged was transmitted.
-
- Adaptive time-out calculations are only performed when an
- Acknowledgment is received. When multi-packet acknowledgments are
- used, the overhead of the adaptive time-out algorithm is reduced. The
- PAC is not required to transmit multi-packet acknowledgments; it can
- instead acknowledge each packet individually as it is delivered to
- the PPP client.
-
-4.3. Out-of-sequence Packets
-
- Occasionally packets lose their sequencing across a complicated
- internetwork. Say, for example that a PNS sends packets 0 to 5 to a
- PAC. Because of rerouting in the internetwork, packet 4 arrives at
- the PAC before packet 3. The PAC acknowledges packet 4, and may
- assume packet 3 is lost. This acknowledgment grants window credit
- beyond packet 4.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 50]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- When the PAC does receive packet 3, it MUST not attempt to transmit
- it to the corresponding PPP client. To do so could cause problems,
- as proper PPP protocol operation is premised upon receiving packets
- in sequence. PPP does properly deal with the loss of packets, but
- not with reordering so out of sequence packets between the PNS and
- PAC MUST be silently discarded, or they may be reordered by the
- receiver. When packet 5 comes in, it is acknowledged by the PAC
- since it has a higher sequence number than 4, which was the last
- highest packet acknowledged by the PAC. Packets with duplicate
- sequence numbers should never occur since the PAC and PNS never
- retransmit GRE packets. A robust implementation will silently
- discard duplicate GRE packets, should it receive any.
-
-4.4. Acknowledgment Time-Outs
-
- PPTP uses sliding windows and time-outs to provide both user session
- flow-control across the internetwork and to perform efficient data
- buffering to keep the PAC-PNS data channels full without causing
- receive buffer overflow. PPTP requires that a time-out be used to
- recover from dropped data or acknowledgment packets. The exact
- implementation of the time-out is vendor-specific. It is suggested
- that an adaptive time-out be implemented with backoff for congestion
- control. The time-out mechanism proposed here has the following
- properties:
-
- Independent time-outs for each session. A device (PAC or PNS) will
- have to maintain and calculate time-outs for every active session.
-
- An administrator-adjustable maximum time-out, MaxTimeOut, unique
- to each device.
-
- An adaptive time-out mechanism that compensates for changing
- throughput. To reduce packet processing overhead, vendors may
- choose not to recompute the adaptive time-out for every received
- acknowledgment. The result of this overhead reduction is that the
- time-out will not respond as quickly to rapid network changes.
-
- Timer backoff on time-out to reduce congestion. The backed-off
- timer value is limited by the configurable maximum time-out value.
- Timer backoff is done every time an acknowledgment time-out
- occurs.
-
- In general, this mechanism has the desirable behavior of quickly
- backing off upon a time-out and of slowly decreasing the time-out
- value as packets are delivered without time-outs.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 51]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Some definitions:
-
- Packet Processing Delay (PPD) is the amount of time required for
- each side to process the maximum amount of data buffered in their
- receive packet sliding window. The PPD is the value exchanged
- between the PAC and PNS when a call is established. For the PNS,
- this number should be small. For a PAC making modem connections,
- this number could be significant.
-
- Sample is the actual amount of time incurred receiving an
- acknowledgment for a packet. The Sample is measured, not
- calculated.
-
- Round-Trip Time (RTT) is the estimated round-trip time for an
- Acknowledgment to be received for a given transmitted packet. When
- the network link is a local network, this delay will be minimal
- (if not zero). When the network link is the Internet, this delay
- could be substantial and vary widely. RTT is adaptive: it will
- adjust to include the PPD and whatever shifting network delays
- contribute to the time between a packet being transmitted and
- receiving its acknowledgment.
-
- Adaptive Time-Out (ATO) is the time that must elapse before an
- acknowledgment is considered lost. After a time-out, the sliding
- window is partially closed and the ATO is backed off.
-
- The Packet Processing Delay (PPD) parameter is a 16-bit word
- exchanged during the Call Control phase that represents tenths of a
- second (64 means 6.4 seconds). The protocol only specifies that the
- parameter is exchanged, it does not specify how it is calculated. The
- way values for PPD are calculated is implementation-dependent and
- need not be variable (static time-outs are allowed). The PPD must be
- exchanged in the call connect sequences, even if it remains constant
- in an implementation. One possible way to calculate the PPD is:
-
- PPD' = ((PPP_MAX_DATA_MTU - Header) * WindowSize * 8) / ConnectRate
- PPD = PPD' + PACFudge
-
- Header is the total size of the IP and GRE headers, which is 36. The
- MTU is the overall MTU for the internetwork link between the PAC and
- PNS. WindowSize represents the number of packets in the sliding
- window, and is implementation-dependent. The latency of the
- internetwork could be used to pick a window size sufficient to keep
- the current session's pipe full. The constant 8 converts octets to
- bits (assuming ConnectRate is in bits per second). If ConnectRate is
- in bytes per second, omit the 8. PACFudge is not required but can be
- used to take overall processing overhead of the PAC into account.
-
-
-
-
-Hamzeh, et al. Informational [Page 52]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- The value of PPD is used to seed the adaptive algorithm with the
- initial RTT[n-1] value.
-
-4.4.1. Calculating Adaptive Acknowledgment Time-Out
-
- We still must decide how much time to allow for acknowledgments to
- return. If the time-out is set too high, we may wait an unnecessarily
- long time for dropped packets. If the time-out is too short, we may
- time out just before the acknowledgment arrives. The acknowledgment
- time-out should also be reasonable and responsive to changing network
- conditions.
-
- The suggested adaptive algorithm detailed below is based on the TCP
- 1989 implementation and is explained in [11]. 'n' means this
- iteration of the calculation, and 'n-1' refers to values from the
- last calculation.
-
- DIFF[n] = SAMPLE[n] - RTT[n-1]
- DEV[n] = DEV[n-1] + (beta * (|DIFF[n]| - DEV[n-1]))
- RTT[n] = RTT[n-1] + (alpha * DIFF[n])
- ATO[n] = MAX (MinTimeOut, MIN (RTT[n] +
- (chi * DEV[n]), MaxTimeOut))
-
- DIFF represents the error between the last estimated round-trip
- time and the measured time. DIFF is calculated on each iteration.
-
- DEV is the estimated mean deviation. This approximates the
- standard deviation. DEV is calculated on each iteration and
- stored for use in the next iteration. Initially, it is set to 0.
-
- RTT is the estimated round-trip time of an average packet. RTT is
- ycalculated on each iteration and stored for use in the next
- iteration. Initially, it is set to PPD.
-
- ATO is the adaptive time-out for the next transmitted packet. ATO
- is calculated on each iteration. Its value is limited, by the MIN
- function, to be a maximum of the configured MaxTimeOut value.
-
- Alpha is the gain for the average and is typically 1/8 (0.125).
-
- Beta is the gain for the deviation and is typically 1/4 (0.250).
-
- Chi is the gain for the time-out and is typically set to 4.
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 53]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- To eliminate division operations for fractional gain elements, the
- entire set of equations can be scaled. With the suggested gain
- constants, they should be scaled by 8 to eliminate all division. To
- simplify calculations, all gain values are kept to powers of two so
- that shift operations can be used in place of multiplication or
- division.
-
-4.4.2. Congestion Control: Adjusting for Time-Out
-
- This section describes how the calculation of ATO is modified in the
- case where a time-out does occur. When a time-out occurs, the time-
- out value should be adjusted rapidly upward. Although the GRE
- packets are not retransmitted when a time-out occurs, the time-out
- should be adjusted up toward a maximum limit. To compensate for
- shifting internetwork time delays, a strategy must be employed to
- increase the time-out when it expires (notice that in addition to
- increasing the time-out, we are also shrinking the size of the window
- as described in the next section). For an interval in which a time-
- out occurs, the new
- ATO is calculated as:
-
- RTT[n] = delta * RTT[n-1]
- DEV[n] = DEV[n-1]
- ATO[n] = MAX (MinTimeOut, MIN (RTT[n] +
- (chi * DEV[n]), MaxTimeOut))
-
- In this calculation of ATO, only the two values that both contribute
- to ATO and are stored for the next iteration are calculated. RTT is
- scaled by delta, and DEV is unmodified. DIFF is not carried forward
- and is not used in this scenario. A value of 2 for Delta, the time-
- out gain factor for RTT, is suggested.
-
-5. Security Considerations
-
- The security of user data passed over the tunneled PPP connection is
- addressed by PPP, as is authentication of the PPP peers.
-
- Because the PPTP control channel messages are neither authenticated
- nor integrity protected, it might be possible for an attacker to
- hijack the underlying TCP connection. It is also possible to
- manufacture false control channel messages and alter genuine messages
- in transit without detection.
-
- The GRE packets forming the tunnel itself are not cryptographically
- protected. Because the PPP negotiations are carried out over the
- tunnel, it may be possible for an attacker to eavesdrop on and modify
- those negotiations.
-
-
-
-
-Hamzeh, et al. Informational [Page 54]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Unless the PPP payload data is cryptographically protected, it can be
- captured and read or modified.
-
-6. Authors' Addresses
-
- Kory Hamzeh
- Ascend Communications
- 1275 Harbor Bay Parkway
- Alameda, CA 94502
-
- EMail: kory@ascend.com
-
-
- Gurdeep Singh Pall
- Microsoft Corporation
- Redmond, WA
-
- EMail: gurdeep@microsoft.com
-
-
- William Verthein
- U.S. Robotics/3Com
-
-
- Jeff Taarud
- Copper Mountain Networks
-
-
- W. Andrew Little
- ECI Telematics
-
-
- Glen Zorn
- Microsoft Corporation
- Redmond, WA
-
- EMail: glennz@microsoft.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 55]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-7. References
-
- [1] Hanks, S., Li, T., Farinacci, D. and P. Traina, "Generic Routing
- Encapsulation (GRE)", RFC 1701, October 1994.
-
- [2] Hanks, S., Li, T., Farinacci, D. and P. Traina, "Generic Routing
- Encapsulation (GRE) over IPv4 Networks", RFC 1702, October 1994.
-
- [3] Lloyd, B. and W. Simpson, "PPP Authentication Protocols", RFC
- 1334, October 1992.
-
- [4] Postel, J., "Transmission Control Protocol", STD 7, RFC 793,
- September 1981.
-
- [5] Postel, J., "User Data Protocol", STD 6, RFC 768, August 1980.
-
- [6] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
- October 1994. See also: http://www.iana.org/numbers.html
-
- [7] Simpson, W., editor, "The Point-to-Point Protocol (PPP)", STD
- 51, RFC 1661, July 1994.
-
- [8] Ethertype for PPP, Reserved with Xerox Corporation.
-
- [9] Simpson, W., "PPP Challenge Handshake Authentication Protocol
- (CHAP)", RFC 1994, August 1996.
-
- [10] Blunk, L. and J Vollbrecht, "PPP Extensible Authentication
- Protocol (EAP)", RFC 2284, March 1998.
-
- [11] Stevens, R., "TCP/IP Illustrated, Volume 1", p. 300, Addison-
- Wesley, 1994.
-
- [12] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 56]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-8. Full Copyright Statement
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 57]
-
diff --git a/doc/rfc2716.txt b/doc/rfc2716.txt
deleted file mode 100644
index 71b4a84..0000000
--- a/doc/rfc2716.txt
+++ /dev/null
@@ -1,1347 +0,0 @@
-
-
-
-
-
-
-Network Working Group B. Aboba
-Requests for Commments: 2716 D. Simon
-Category: Experimental Microsoft
- October 1999
-
-
- PPP EAP TLS Authentication Protocol
-
-Status of this Memo
-
- This memo defines an Experimental Protocol for the Internet
- community. It does not specify an Internet standard of any kind.
- Discussion and suggestions for improvement are requested.
- Distribution of this memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
-1. Abstract
-
- The Point-to-Point Protocol (PPP) provides a standard method for
- transporting multi-protocol datagrams over point-to-point links. PPP
- also defines an extensible Link Control Protocol (LCP), which can be
- used to negotiate authentication methods, as well as an Encryption
- Control Protocol (ECP), used to negotiate data encryption over PPP
- links, and a Compression Control Protocol (CCP), used to negotiate
- compression methods. The Extensible Authentication Protocol (EAP) is
- a PPP extension that provides support for additional authentication
- methods within PPP.
-
- Transport Level Security (TLS) provides for mutual authentication,
- integrity-protected ciphersuite negotiation and key exchange between
- two endpoints. This document describes how EAP-TLS, which includes
- support for fragmentation and reassembly, provides for these TLS
- mechanisms within EAP.
-
-2. Introduction
-
- The Extensible Authentication Protocol (EAP), described in [5],
- provides a standard mechanism for support of additional
- authentication methods within PPP. Through the use of EAP, support
- for a number of authentication schemes may be added, including smart
- cards, Kerberos, Public Key, One Time Passwords, and others. To date
- however, EAP methods such as [6] have focussed on authenticating a
- client to a server.
-
-
-
-
-
-Aboba & Simon Experimental [Page 1]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- However, it may be desirable to support mutual authentication, and
- since PPP encryption protocols such as [9] and [10] assume existence
- of a session key, it is useful to have a mechanism for session key
- establishment. Since design of secure key management protocols is
- non-trivial, it is desirable to avoid creating new mechanisms for
- this. The EAP protocol described in this document allows a PPP peer
- to take advantage of the protected ciphersuite negotiation, mutual
- authentication and key management capabilities of the TLS protocol,
- described in [12].
-
-2.1. Requirements language
-
- In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
- "recommended", "SHOULD", and "SHOULD NOT", are to be interpreted as
- described in [11].
-
-3. Protocol overview
-
-3.1. Overview of the EAP-TLS conversation
-
- As described in [5], the EAP-TLS conversation will typically begin
- with the authenticator and the peer negotiating EAP. The
- authenticator will then typically send an EAP-Request/Identity packet
- to the peer, and the peer will respond with an EAP-Response/Identity
- packet to the authenticator, containing the peer's userId.
-
- From this point forward, while nominally the EAP conversation occurs
- between the PPP authenticator and the peer, the authenticator MAY act
- as a passthrough device, with the EAP packets received from the peer
- being encapsulated for transmission to a RADIUS server or backend
- security server. In the discussion that follows, we will use the term
- "EAP server" to denote the ultimate endpoint conversing with the
- peer.
-
- Once having received the peer's Identity, the EAP server MUST respond
- with an EAP-TLS/Start packet, which is an EAP-Request packet with
- EAP-Type=EAP-TLS, the Start (S) bit set, and no data. The EAP-TLS
- conversation will then begin, with the peer sending an EAP-Response
- packet with EAP-Type=EAP-TLS. The data field of that packet will
- encapsulate one or more TLS records in TLS record layer format,
- containing a TLS client_hello handshake message. The current cipher
- spec for the TLS records will be TLS_NULL_WITH_NULL_NULL and null
- compression. This current cipher spec remains the same until the
- change_cipher_spec message signals that subsequent records will have
- the negotiated attributes for the remainder of the handshake.
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 2]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- The client_hello message contains the client's TLS version number, a
- sessionId, a random number, and a set of ciphersuites supported by
- the client. The version offered by the client MUST correspond to TLS
- v1.0 or later.
-
- The EAP server will then respond with an EAP-Request packet with
- EAP-Type=EAP-TLS. The data field of this packet will encapsulate one
- or more TLS records. These will contain a TLS server_hello handshake
- message, possibly followed by TLS certificate, server_key_exchange,
- certificate_request, server_hello_done and/or finished handshake
- messages, and/or a TLS change_cipher_spec message. The server_hello
- handshake message contains a TLS version number, another random
- number, a sessionId, and a ciphersuite. The version offered by the
- server MUST correspond to TLS v1.0 or later.
-
- If the client's sessionId is null or unrecognized by the server, the
- server MUST choose the sessionId to establish a new session;
- otherwise, the sessionId will match that offered by the client,
- indicating a resumption of the previously established session with
- that sessionID. The server will also choose a ciphersuite from those
- offered by the client; if the session matches the client's, then the
- ciphersuite MUST match the one negotiated during the handshake
- protocol execution that established the session.
-
- The purpose of the sessionId within the TLS protocol is to allow for
- improved efficiency in the case where a client repeatedly attempts to
- authenticate to an EAP server within a short period of time. While
- this model was developed for use with HTTP authentication, it may
- also have application to PPP authentication (e.g. multilink).
-
- As a result, it is left up to the peer whether to attempt to continue
- a previous session, thus shortening the TLS conversation. Typically
- the peer's decision will be made based on the time elapsed since the
- previous authentication attempt to that EAP server. Based on the
- sessionId chosen by the peer, and the time elapsed since the previous
- authentication, the EAP server will decide whether to allow the
- continuation, or whether to choose a new session.
-
- In the case where the EAP server and authenticator reside on the same
- device, then client will only be able to continue sessions when
- connecting to the same NAS or tunnel server. Should these devices be
- set up in a rotary or round-robin then it may not be possible for the
- peer to know in advance the authenticator it will be connecting to,
- and therefore which sessionId to attempt to reuse. As a result, it is
- likely that the continuation attempt will fail. In the case where the
- EAP authentication is remoted then continuation is much more likely
- to be successful, since multiple NAS devices and tunnel servers will
- remote their EAP authentications to the same RADIUS server.
-
-
-
-Aboba & Simon Experimental [Page 3]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- If the EAP server is resuming a previously established session, then
- it MUST include only a TLS change_cipher_spec message and a TLS
- finished handshake message after the server_hello message. The
- finished message contains the EAP server's authentication response to
- the peer. If the EAP server is not resuming a previously established
- session, then it MUST include a TLS server_certificate handshake
- message, and a server_hello_done handshake message MUST be the last
- handshake message encapsulated in this EAP-Request packet.
-
- The certificate message contains a public key certificate chain for
- either a key exchange public key (such as an RSA or Diffie-Hellman
- key exchange public key) or a signature public key (such as an RSA or
- DSS signature public key). In the latter case, a TLS
- server_key_exchange handshake message MUST also be included to allow
- the key exchange to take place.
-
- The certificate_request message is included when the server desires
- the client to authenticate itself via public key. While the EAP
- server SHOULD require client authentication, this is not a
- requirement, since it may be possible that the server will require
- that the peer authenticate via some other means.
-
- The peer MUST respond to the EAP-Request with an EAP-Response packet
- of EAP-Type=EAP-TLS. The data field of this packet will encapsulate
- one or more TLS records containing a TLS change_cipher_spec message
- and finished handshake message, and possibly certificate,
- certificate_verify and/or client_key_exchange handshake messages. If
- the preceding server_hello message sent by the EAP server in the
- preceding EAP-Request packet indicated the resumption of a previous
- session, then the peer MUST send only the change_cipher_spec and
- finished handshake messages. The finished message contains the
- peer's authentication response to the EAP server.
-
- If the preceding server_hello message sent by the EAP server in the
- preceeding EAP-Request packet did not indicate the resumption of a
- previous session, then the peer MUST send, in addition to the
- change_cipher_spec and finished messages, a client_key_exchange
- message, which completes the exchange of a shared master secret
- between the peer and the EAP server. If the EAP server sent a
- certificate_request message in the preceding EAP-Request packet, then
- the peer MUST send, in addition, certificate and certificate_verify
- handshake messages. The former contains a certificate for the peer's
- signature public key, while the latter contains the peer's signed
- authentication response to the EAP server. After receiving this
- packet, the EAP server will verify the peer's certificate and digital
- signature, if requested.
-
-
-
-
-
-Aboba & Simon Experimental [Page 4]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- If the peer's authentication is unsuccessful, the EAP server SHOULD
- send an EAP-Request packet with EAP-Type=EAP-TLS, encapsulating a TLS
- record containing the appropriate TLS alert message. The EAP server
- SHOULD send a TLS alert message rather immediately terminating the
- conversation so as to allow the peer to inform the user of the cause
- of the failure and possibly allow for a restart of the conversation.
-
- To ensure that the peer receives the TLS alert message, the EAP
- server MUST wait for the peer to reply with an EAP-Response packet.
- The EAP-Response packet sent by the peer MAY encapsulate a TLS
- client_hello handshake message, in which case the EAP server MAY
- allow the EAP-TLS conversation to be restarted, or it MAY contain an
- EAP-Response packet with EAP-Type=EAP-TLS and no data, in which case
- the EAP-Server MUST send an EAP-Failure packet, and terminate the
- conversation. It is up to the EAP server whether to allow restarts,
- and if so, how many times the conversation can be restarted. An EAP
- Server implementing restart capability SHOULD impose a limit on the
- number of restarts, so as to protect against denial of service
- attacks.
-
- If the peers authenticates successfully, the EAP server MUST respond
- with an EAP-Request packet with EAP-Type=EAP-TLS, which includes, in
- the case of a new TLS session, one or more TLS records containing TLS
- change_cipher_spec and finished handshke messages. The latter
- contains the EAP server's authentication response to the peer. The
- peer will then verify the hash in order to authenticate the EAP
- server.
-
- If the EAP server authenticates unsuccessfully, the peer MAY send an
- EAP-Response packet of EAP-Type=EAP-TLS containing a TLS Alert
- message identifying the reason for the failed authentication. The
- peer MAY send a TLS alert message rather than immediately terminating
- the conversation so as to allow the EAP server to log the cause of
- the error for examination by the system administrator.
-
- To ensure that the EAP Server receives the TLS alert message, the
- peer MUST wait for the EAP-Server to reply before terminating the
- conversation. The EAP Server MUST reply with an EAP-Failure packet
- since server authentication failure is a terminal condition.
-
- If the EAP server authenticates successfully, the peer MUST send an
- EAP-Response packet of EAP-Type=EAP-TLS, and no data. The EAP-Server
- then MUST respond with an EAP-Success message.
-
-
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 5]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
-3.2. Retry behavior
-
- As with other EAP protocols, the EAP server is responsible for retry
- behavior. This means that if the EAP server does not receive a reply
- from the peer, it MUST resend the EAP-Request for which it has not
- yet received an EAP-Response. However, the peer MUST NOT resend EAP-
- Response packets without first being prompted by the EAP server.
-
- For example, if the initial EAP-TLS start packet sent by the EAP
- server were to be lost, then the peer would not receive this packet,
- and would not respond to it. As a result, the EAP-TLS start packet
- would be resent by the EAP server. Once the peer received the EAP-TLS
- start packet, it would send an EAP-Response encapsulating the
- client_hello message. If the EAP-Response were to be lost, then the
- EAP server would resend the initial EAP-TLS start, and the peer would
- resend the EAP-Response.
-
- As a result, it is possible that a peer will receive duplicate EAP-
- Request messages, and may send duplicate EAP-Responses. Both the
- peer and the EAP-Server should be engineered to handle this
- possibility.
-
-3.3. Fragmentation
-
- A single TLS record may be up to 16384 octets in length, but a TLS
- message may span multiple TLS records, and a TLS certificate message
- may in principle be as long as 16MB. The group of EAP-TLS messages
- sent in a single round may thus be larger than the PPP MTU size, the
- maximum RADIUS packet size of 4096 octets, or even the Multilink
- Maximum Received Reconstructed Unit (MRRU). As described in [2], the
- multilink MRRU is negotiated via the Multilink MRRU LCP option, which
- includes an MRRU length field of two octets, and thus can support
- MRRUs as large as 64 KB.
-
- However, note that in order to protect against reassembly lockup and
- denial of service attacks, it may be desirable for an implementation
- to set a maximum size for one such group of TLS messages. Since a
- typical certificate chain is rarely longer than a few thousand
- octets, and no other field is likely to be anwhere near as long, a
- reasonable choice of maximum acceptable message length might be 64
- KB.
-
- If this value is chosen, then fragmentation can be handled via the
- multilink PPP fragmentation mechanisms described in [2]. While this
- is desirable, there may be cases in which multilink or the MRRU LCP
- option cannot be negotiated. As a result, an EAP-TLS implementation
- MUST provide its own support for fragmentation and reassembly.
-
-
-
-
-Aboba & Simon Experimental [Page 6]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- Since EAP is a simple ACK-NAK protocol, fragmentation support can be
- added in a simple manner. In EAP, fragments that are lost or damaged
- in transit will be retransmitted, and since sequencing information is
- provided by the Identifier field in EAP, there is no need for a
- fragment offset field as is provided in IPv4.
-
- EAP-TLS fragmentation support is provided through addition of a flags
- octet within the EAP-Response and EAP-Request packets, as well as a
- TLS Message Length field of four octets. Flags include the Length
- included (L), More fragments (M), and EAP-TLS Start (S) bits. The L
- flag is set to indicate the presence of the four octet TLS Message
- Length field, and MUST be set for the first fragment of a fragmented
- TLS message or set of messages. The M flag is set on all but the last
- fragment. The S flag is set only within the EAP-TLS start message
- sent from the EAP server to the peer. The TLS Message Length field is
- four octets, and provides the total length of the TLS message or set
- of messages that is being fragmented; this simplifies buffer
- allocation.
-
- When an EAP-TLS peer receives an EAP-Request packet with the M bit
- set, it MUST respond with an EAP-Response with EAP-Type=EAP-TLS and
- no data. This serves as a fragment ACK. The EAP server MUST wait
- until it receives the EAP-Response before sending another fragment.
- In order to prevent errors in processing of fragments, the EAP server
- MUST increment the Identifier field for each fragment contained
- within an EAP-Request, and the peer MUST include this Identifier
- value in the fragment ACK contained within the EAP-Reponse.
- Retransmitted fragments will contain the same Identifier value.
-
- Similarly, when the EAP server receives an EAP-Response with the M
- bit set, it MUST respond with an EAP-Request with EAP-Type=EAP-TLS
- and no data. This serves as a fragment ACK. The EAP peer MUST wait
- until it receives the EAP-Request before sending another fragment.
- In order to prevent errors in the processing of fragments, the EAP
- server MUST use increment the Identifier value for each fragment ACK
- contained within an EAP-Request, and the peer MUST include this
- Identifier value in the subsequent fragment contained within an EAP-
- Reponse.
-
-3.4. Identity verification
-
- As part of the TLS negotiation, the server presents a certificate to
- the peer, and if mutual authentication is requested, the peer
- presents a certificate to the server.
-
- Note that since the peer has made a claim of identity in the EAP-
- Response/Identity (MyID) packet, the EAP server SHOULD verify that
- the claimed identity corresponds to the certificate presented by the
-
-
-
-Aboba & Simon Experimental [Page 7]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- peer. Typically this will be accomplished either by placing the
- userId within the peer certificate, or by providing a mapping between
- the peer certificate and the userId using a directory service.
-
- Similarly, the peer MUST verify the validity of the EAP server
- certificate, and SHOULD also examine the EAP server name presented in
- the certificate, in order to determine whether the EAP server can be
- trusted. Please note that in the case where the EAP authentication is
- remoted that the EAP server will not reside on the same machine as
- the authenticator, and therefore the name in the EAP server's
- certificate cannot be expected to match that of the intended
- destination. In this case, a more appropriate test might be whether
- the EAP server's certificate is signed by a CA controlling the
- intended destination and whether the EAP server exists within a
- target sub-domain.
-
-3.5. Key derivation
-
- Since the normal TLS keys are used in the handshake, and therefore
- should not be used in a different context, new encryption keys must
- be derived from the TLS master secret for use with PPP encryption.
- For both peer and EAP server, the derivation proceeds as follows:
- given the master secret negotiated by the TLS handshake, the
- pseudorandom function (PRF) defined in the specification for the
- version of TLS in use, and the value random defined as the
- concatenation of the handshake message fields client_hello.random and
- server_hello.random (in that order), the value PRF(master secret,
- "client EAP encryption", random) is computed up to 128 bytes, and the
- value PRF("", "client EAP encryption", random) is computed up to 64
- bytes (where "" is an empty string). The peer encryption key (the
- one used for encrypting data from peer to EAP server) is obtained by
- truncating to the correct length the first 32 bytes of the first PRF
- of these two output strings. TheEAP server encryption key (the one
- used for encrypting data from EAP server to peer), if different from
- the client encryption key, is obtained by truncating to the correct
- length the second 32 bytes of this same PRF output string. The
- client authentication key (the one used for computing MACs for
- messages from peer to EAP server), if used, is obtained by truncating
- to the correct length the third 32 bytes of this same PRF output
- string. The EAP server authentication key (the one used for
- computing MACs for messages from EAP server to peer), if used, and if
- different from the peer authentication key, is obtained by truncating
- to the correct length the fourth 32 bytes of this same PRF output
- string. The peer initialization vector (IV), used for messages from
- peer to EAP server if a block cipher has been specified, is obtained
- by truncating to the cipher's block size the first 32 bytes of the
- second PRF output string mentioned above. Finally, the server
- initialization vector (IV), used for messages from peer to EAP server
-
-
-
-Aboba & Simon Experimental [Page 8]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- if a block cipher has been specified, is obtained by truncating to
- the cipher's block size the second 32 bytes of this second PRF
- output.
-
- The use of these encryption and authentication keys is specific to
- the PPP encryption mechanism used, such as those defined in [9] and
- [10]. Additional keys or other non-secret values (such as IVs) can
- be obtained as needed for future PPP encryption methods by extending
- the outputs of the PRF beyond 128 bytes and 64 bytes, respectively.
-
-3.6. ECP negotiation
-
- Since TLS supports ciphersuite negotiation, peers completing the TLS
- negotiation will also have selected a ciphersuite, which includes key
- strength, encryption and hashing methods. As a result, a subsequent
- Encryption Control Protocol (ECP) conversation, if it occurs, has a
- predetermined result.
-
- In order to ensure agreement between the EAP-TLS ciphersuite
- negotiation and the subsequent ECP negotiation (described in [6]),
- during ECP negotiation the PPP peer MUST offer only the ciphersuite
- negotiated inEAP-TLS. This ensures that the PPP authenticator MUST
- accept the EAP-TLS negotiated ciphersuite in order for the
- onversation to proceed. Should the authenticator not accept the
- EAP-TLS negotiated ciphersuite, then the peer MUST send an LCP
- terminate and disconnect.
-
- Please note that it cannot be assumed that the PPP authenticator and
- EAP server are located on the same machine or that the authenticator
- understands the EAP-TLS conversation that has passed through it. Thus
- if the peer offers a ciphersuite other than the one negotiated in
- EAP-TLS there is no way for the authenticator to know how to respond
- correctly.
-
-3.7. CCP negotiation
-
- TLS as described in [12] supports compression as well as ciphersuite
- negotiation. However, TLS only provides support for a limited number
- of compression types which do not overlap with the compression types
- used in PPP. As a result, during the EAP-TLS conversation the EAP
- endpoints MUST NOT request or negotiate compression. Instead, the PPP
- Compression Control Protocol (CCP), described in [13] should be used
- to negotiate the desired compression scheme.
-
-
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 9]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
-3.8. Examples
-
- In the case where the EAP-TLS mutual authentication is successful,
- the conversation will appear as follows:
-
- Authenticating Peer Authenticator
- ------------------- -------------
- <- PPP LCP Request-EAP
- auth
- PPP LCP ACK-EAP
- auth ->
- <- PPP EAP-Request/
- Identity
- PPP EAP-Response/
- Identity (MyID) ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS Start)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS client_hello)->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS server_hello,
- TLS certificate,
- [TLS server_key_exchange,]
- [TLS certificate_request,]
- TLS server_hello_done)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS certificate,
- TLS client_key_exchange,
- [TLS certificate_verify,]
- TLS change_cipher_spec,
- TLS finished) ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS change_cipher_spec,
- TLS finished)
- PPP EAP-Response/
- EAP-Type=EAP-TLS ->
- <- PPP EAP-Success
- PPP Authentication
- Phase complete,
- NCP Phase starts
-
- ECP negotiation
- CCP negotiation
-
-
-
-Aboba & Simon Experimental [Page 10]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- In the case where the EAP-TLS mutual authentication is successful,
- and fragmentation is required, the conversation will appear as
- follows:
-
- Authenticating Peer Authenticator
- ------------------- -------------
- <- PPP LCP Request-EAP
- auth
- PPP LCP ACK-EAP
- auth ->
- <- PPP EAP-Request/
- Identity
- PPP EAP-Response/
- Identity (MyID) ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS Start, S bit set)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS client_hello)->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS server_hello,
- TLS certificate,
- [TLS server_key_exchange,]
- [TLS certificate_request,]
- TLS server_hello_done)
- (Fragment 1: L, M bits set)
- PPP EAP-Response/
- EAP-Type=EAP-TLS ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (Fragment 2: M bit set)
- PPP EAP-Response/
- EAP-Type=EAP-TLS ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (Fragment 3)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS certificate,
- TLS client_key_exchange,
- [TLS certificate_verify,]
- TLS change_cipher_spec,
- TLS inished)(Fragment 1:
- L, M bits set)->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
-
-
-
-Aboba & Simon Experimental [Page 11]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (Fragment 2)->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS change_cipher_spec,
- TLS finished)
- PPP EAP-Response/
- EAP-Type=EAP-TLS ->
- <- PPP EAP-Success
- PPP Authentication
- Phase complete,
- NCP Phase starts
-
- ECP negotiation
- CCP negotiation
-
- In the case where the server authenticates to the client
- successfully, but the client fails to authenticate to the server, the
- conversation will appear as follows:
-
- Authenticating Peer Authenticator
- ------------------- -------------
- <- PPP LCP Request-EAP
- auth
- PPP LCP ACK-EAP
- auth ->
- <- PPP EAP-Request/
- Identity
- PPP EAP-Response/
- Identity (MyID) ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS Start)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS client_hello)->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS server_hello,
- TLS certificate,
- [TLS server_key_exchange,]
- TLS certificate_request,
- TLS server_hello_done)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS certificate,
- TLS client_key_exchange,
-
-
-
-Aboba & Simon Experimental [Page 12]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- TLS certificate_verify,
- TLS change_cipher_spec,
- TLS finished) ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS change_cipher_spec,
- TLS finished)
- PPP EAP-Response/
- EAP-Type=EAP-TLS ->
- <- PPP EAP-Request
- EAP-Type=EAP-TLS
- (TLS Alert message)
- PPP EAP-Response/
- EAP-Type=EAP-TLS ->
- <- PPP EAP-Failure
- (User Disconnected)
-
- In the case where server authentication is unsuccessful, the
- conversation will appear as follows:
-
- Authenticating Peer Authenticator
- ------------------- -------------
- <- PPP LCP Request-EAP
- auth
- PPP LCP ACK-EAP
- auth ->
- <- PPP EAP-Request/
- Identity
- PPP EAP-Response/
- Identity (MyID) ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS Start)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS client_hello)->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS server_hello,
- TLS certificate,
- [TLS server_key_exchange,]
- [TLS certificate_request,]
- TLS server_hello_done)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS certificate,
- TLS client_key_exchange,
- [TLS certificate_verify,]
-
-
-
-Aboba & Simon Experimental [Page 13]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- TLS change_cipher_spec,
- TLS finished) ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS change_cipher_spec,
- TLS finished)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS change_cipher_spec,
- TLS finished)
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS Alert message) ->
- <- PPP EAP-Failure
- (User Disconnected)
-
- In the case where a previously established session is being resumed,
- and both sides authenticate successfully, the conversation will
- appear as follows:
-
- Authenticating Peer Authenticator
- ------------------- -------------
- <- PPP LCP Request-EAP
- auth
- PPP LCP ACK-EAP
- auth ->
- <- PPP EAP-Request/
- Identity
- PPP EAP-Response/
- Identity (MyID) ->
- <- PPP EAP-Request/
- EAP-Request/
- EAP-Type=EAP-TLS
- (TLS Start)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS client_hello)->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS server_hello,
- TLS change_cipher_spec
- TLS finished)
-
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 14]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS change_cipher_spec,
- TLS finished) ->
- <- PPP EAP-Success
- PPP Authentication
- Phase complete,
- NCP Phase starts
-
- ECP negotiation
-
- CCP negotiation
-
- In the case where a previously established session is being resumed,
- and the server authenticates to the client successfully but the
- client fails to authenticate to the server, the conversation will
- appear as follows:
-
- Authenticating Peer Authenticator
- ------------------- -------------
- <- PPP LCP Request-EAP
- auth
- PPP LCP ACK-EAP
- auth ->
- <- PPP EAP-Request/
- Identity
- PPP EAP-Response/
- Identity (MyID) ->
- <- PPP EAP-Request/
- EAP-Request/
- EAP-Type=EAP-TLS
- (TLS Start)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS client_hello) ->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS server_hello,
- TLS change_cipher_spec,
- TLS finished)
- PPP EA-Response/
- EAP-Type=EAP-TLS
- (TLS change_cipher_spec,
- TLS finished) ->
- <- PPP EAP-Request
- EAP-Type=EAP-TLS
- (TLS Alert message)
-
-
-
-
-Aboba & Simon Experimental [Page 15]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- PPP EAP-Response
- EAP-Type=EAP-TLS ->
- <- PPP EAP-Failure
- (User Disconnected)
-
- In the case where a previously established session is being resumed,
- and the server authentication is unsuccessful, the conversation will
- appear as follows:
-
- Authenticating Peer Authenticator
- ------------------- -------------
- <- PPP LCP Request-EAP
- auth
- PPP LCP ACK-EAP
- auth ->
- <- PPP EAP-Request/
- Identity
- PPP EAP-Response/
- Identity (MyID) ->
- <- PPP EAP-Request/
- EAP-Request/
- EAP-Type=EAP-TLS
- (TLS Start)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS client_hello)->
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- (TLS server_hello,
- TLS change_cipher_spec,
- TLS finished)
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS change_cipher_spec,
- TLS finished)
- <- PPP EAP-Request/
- EAP-Type=EAP-TLS
- PPP EAP-Response/
- EAP-Type=EAP-TLS
- (TLS Alert message) ->
- <- PPP EAP-Failure
- (User Disconnected)
-
-
-
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 16]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
-4. Detailed description of the EAP-TLS protocol
-
-4.1. PPP EAP TLS Packet Format
-
- A summary of the PPP EAP TLS Request/Response packet format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Data...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Code
-
- 1 - Request
- 2 - Response
-
- Identifier
-
- The identifier field is one octet and aids in matching responses
- with requests.
-
- Length
-
- The Length field is two octets and indicates the length of the EAP
- packet including the Code, Identifier, Length, Type, and Data
- fields. Octets outside the range of the Length field should be
- treated as Data Link Layer padding and should be ignored on
- reception.
-
- Type
-
- 13 - EAP TLS
-
- Data
-
- The format of the Data field is determined by the Code field.
-
-
-
-
-
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 17]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
-4.2. PPP EAP TLS Request Packet
-
- A summary of the PPP EAP TLS Request packet format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Flags | TLS Message Length
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | TLS Message Length | TLS Data...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Code
-
- 1
-
- Identifier
-
- The Identifier field is one octet and aids in matching responses
- with requests. The Identifier field MUST be changed on each
- Request packet.
-
- Length
-
- The Length field is two octets and indicates the length of the EAP
- packet including the Code, Identifier, Length, Type, and TLS
- Response fields.
-
- Type
-
- 13 - EAP TLS
-
- Flags
-
- 0 1 2 3 4 5 6 7 8
- +-+-+-+-+-+-+-+-+
- |L M S R R R R R|
- +-+-+-+-+-+-+-+-+
-
- L = Length included
- M = More fragments
- S = EAP-TLS start
- R = Reserved
-
-
-
-
-
-Aboba & Simon Experimental [Page 18]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- The L bit (length included) is set to indicate the presence of the
- four octet TLS Message Length field, and MUST be set for the first
- fragment of a fragmented TLS message or set of messages. The M bit
- (more fragments) is set on all but the last fragment. The S bit
- (EAP-TLS start) is set in an EAP-TLS Start message. This
- differentiates the EAP-TLS Start message from a fragment
- acknowledgement.
-
- TLS Message Length
-
- The TLS Message Length field is four octets, and is present only
- if the L bit is set. This field provides the total length of the
- TLS message or set of messages that is being fragmented.
-
- TLS data
-
- The TLS data consists of the encapsulated TLS packet in TLS record
- format.
-
-4.3. PPP EAP TLS Response Packet
-
- A summary of the PPP EAP TLS Response packet format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Flags | TLS Message Length
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | TLS Message Length | TLS Data...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Code
-
- 2
-
- Identifier
-
- The Identifier field is one octet and MUST match the Identifier
- field from the corresponding request.
-
- Length
-
- The Length field is two octets and indicates the length of the EAP
- packet including the Code, Identifir, Length, Type, and TLS data
- fields.
-
-
-
-Aboba & Simon Experimental [Page 19]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- Type
-
- 13 - EAP TLS
-
- Flags
-
- 0 1 2 3 4 5 6 7 8
- +-+-+-+-+-+-+-+-+
- |L M S R R R R R|
- +-+-+-+-+-+-+-+-+
-
- L = Length included
- M = More fragments
- S = EAP-TLS start
- R = Reserved
-
- The L bit (length included) is set to indicate the presence of the
- four octet TLS Message Length field, and MUST be set for the first
- fragment of a fragmented TLS message or set of messages. The M bit
- (more fragments) is set on all but the last fragment. The S bit
- (EAP-TLS start) is set in an EAP-TLS Start message. This
- differentiates the EAP-TLS Start message from a fragment
- acknowledgement.
-
- TLS Message Length
-
- The TLS Message Length field is four octets, and is present only
- if the L bit is set. This field provides the total length of the
- TLS message or set of messages that is being fragmented.
-
- TLS data
-
- The TLS data consists of the encapsulated TLS packet in TLS record
- format.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 20]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
-5. References
-
- [1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD
- 51, RFC 1661, July 1994.
-
- [2] Sklower, K., Lloyd, B., McGregor, G., Carr, D. and T. Coradetti,
- "The PPP Multilink Protocol (MP)", RFC 1990, August 1996.
-
- [3] Simpson, W., Editor, "PPP LCP Extensions", RFC 1570, January
- 1994.
-
- [4] Rivest, R. and S. Dusse, "The MD5 Message-Digest Algorithm", RFC
- 1321, April 1992.
-
- [5] Blunk, L. and J. Vollbrecht, "PPP Extensible Authentication
- Protocol (EAP)", RFC 2284, March 1998.
-
- [6] Meyer, G., "The PPP Encryption Protocol (ECP)", RFC 1968, June
- 1996.
-
- [7] National Bureau of Standards, "Data Encryption Standard", FIPS
- PUB 46 (January 1977).
-
- [8] National Bureau of Standards, "DES Modes of Operation", FIPS PUB
- 81 (December 1980).
-
- [9] Sklower, K. amd G. Meyer, "The PPP DES Encryption Protocol,
- Version 2 (DESE-bis)", RFC 2419, September 1998.
-
- [10] Hummert, K., "The PPP Triple-DES Encryption Protocol (3DESE)",
- RFC 2420, September 1998.
-
- [11] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
- [12] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC
- 2246, November 1998.
-
- [13] Rand, D., "The PPP Compression Control Protocol", RFC 1962, June
- 1996.
-
-
-
-
-
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 21]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
-6. Security Considerations
-
-6.1. Certificate revocation
-
- Since the EAP server is on the Internet during the EAP conversation,
- the server is capable of following a certificate chain or verifying
- whether the peer's certificate has been revoked. In contrast, the
- peer may or may not have Internet connectivity, and thus while it can
- validate the EAP server's certificate based on a pre-configured set
- of CAs, it may not be able to follow a certificate chain or verify
- whether the EAP server's certificate has been revoked.
-
- In the case where the peer is initiating a voluntary Layer 2 tunnel
- using PPTP or L2TP, the peer will typically already have a PPP
- interface and Internet connectivity established at the time of tunnel
- initiation. As a result, during the EAP conversation it is capable
- of checking for certificate revocation.
-
- However, in the case where the peer is initiating an intial PPP
- conversation, it will not have Internet connectivity and is therefore
- not capable of checking for certificate revocation until after NCP
- negotiation completes and the peer has access to the Internet. In
- this case, the peer SHOULD check for certificate revocation after
- connecting to the Internet.
-
-6.2. Separation of the EAP server and PPP authenticator
-
- As a result of the EAP-TLS conversation, the EAP endpoints will
- mutually authenticate, negotiate a ciphersuite, and derive a session
- key for subsequent use in PPP encryption. Since the peer and EAP
- client reside on the same machine, it is necessary for the EAP client
- module to pass the session key to the PPP encryption module.
-
- The situation may be more complex on the PPP authenticator, which may
- or may not reside on the same machine as the EAP server. In the case
- where the EAP server and PPP authenticator reside on different
- machines, there are several implications for security. Firstly, the
- mutual authentication defined in EAP-TLS will occur between the peer
- and the EAP server, not between the peer and the authenticator. This
- means that as a result of the EAP-TLS conversation, it is not
- possible for the peer to validate the identity of the NAS or tunnel
- server that it is speaking to.
-
- The second issue is that the session key negotiated between the peer
- and EAP server will need to be transmitted to the authenticator.
- Therefore a mechanism needs to be provided to transmit the session
- key from the EAP server to the authenticator or tunnel server that
- needs to use the key. The specification of this transit mechanism is
-
-
-
-Aboba & Simon Experimental [Page 22]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
- outside the scope of this document.
-
-6.3. Relationship of PPP encryption to other security mechanisms
-
- It is envisaged that EAP-TLS will be used primarily with dialup PPP
- connections. However, there are also circumstances in which PPP
- encryption may be used along with Layer 2 tunneling protocols such as
- PPTP and L2TP.
-
- In compulsory layer 2 tunneling, a PPP peer makes a connection to a
- NAS or router which tunnels the PPP packets to a tunnel server.
- Since with compulsory tunneling a PPP peer cannot tell whether its
- packets are being tunneled, let alone whether the network device is
- securing the tunnel, if security is required then the client must
- make its own arrangements. In the case where all endpoints cannot be
- relied upon to implement IPSEC, TLS, or another suitable security
- protocol, PPP encryption provides a convenient means to ensure the
- privacy of packets transiting between the client and the tunnel
- server.
-
-7. Acknowledgments
-
- Thanks to Terence Spies, Glen Zorn and Narendra Gidwani of Microsoft
- for useful discussions of this problem space.
-
-8. Authors' Addresses
-
- Bernard Aboba
- Microsoft Corporation
- One Microsoft Way
- Redmond, WA 98052
-
- Phone: 425-936-6605
- EMail: bernarda@microsoft.com
-
-
- Dan Simon
- Microsoft Corporation
- One Microsoft Way
- Redmond, WA 98052
-
- Phone: 425-936-6711
- EMail: dansimon@microsoft.com
-
-
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 23]
-
-RFC 2716 PPP EAP TLS Authentication Protocol October 1999
-
-
-9. Full Copyright Statement
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Aboba & Simon Experimental [Page 24]
-
diff --git a/doc/rfc2759.txt b/doc/rfc2759.txt
deleted file mode 100644
index 60371c4..0000000
--- a/doc/rfc2759.txt
+++ /dev/null
@@ -1,1123 +0,0 @@
-
-
-
-
-
-
-Network Working Group G. Zorn
-Request for Comments: 2759 Microsoft Corporation
-Category: Informational January 2000
-
-
- Microsoft PPP CHAP Extensions, Version 2
-
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2000). All Rights Reserved.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) [1] provides a standard method for
- transporting multi-protocol datagrams over point-to-point links. PPP
- defines an extensible Link Control Protocol and a family of Network
- Control Protocols (NCPs) for establishing and configuring different
- network-layer protocols.
-
- This document describes version two of Microsoft's PPP CHAP dialect
- (MS-CHAP-V2). MS-CHAP-V2 is similar to, but incompatible with, MS-
- CHAP version one (MS-CHAP-V1, described in [9]). In particular,
- certain protocol fields have been deleted or reused but with
- different semantics. In addition, MS-CHAP-V2 features mutual
- authentication.
-
- The algorithms used in the generation of various MS-CHAP-V2 protocol
- fields are described in section 8. Negotiation and hash generation
- examples are provided in section 9.
-
-Specification of Requirements
-
- In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
- "recommended", "SHOULD", and "SHOULD NOT" are to be interpreted as
- described in [3].
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 1]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-Table of Contents
-
- 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
- 2. LCP Configuration . . . . . . . . . . . . . . . . . . . . . . . 3
- 3. Challenge Packet . . . . . . . . . . . . . . . . . . . . . . . 3
- 4. Response Packet . . . . . . . . . . . . . . . . . . . . . . . . 4
- 5. Success Packet . . . . . . . . . . . . . . . . . . . . . . . . 4
- 6. Failure Packet . . . . . . . . . . . . . . . . . . . . . . . . 5
- 7. Change-Password Packet . . . . . . . . . . . . . . . . . . . . 6
- 8. Pseudocode . . . . . . . . . . . . . . . . . . . . . . . . . . 7
- 8.1. GenerateNTResponse() . . . . . . . . . . . . . . . . . . . . 7
- 8.2. ChallengeHash() . . . . . . . . . . . . . . . . . . . . . . . 8
- 8.3. NtPasswordHash() . . . . . . . . . . . . . . . . . . . . . . 9
- 8.4. HashNtPasswordHash() . . . . . . . . . . . . . . . . . . . . 9
- 8.5. ChallengeResponse() . . . . . . . . . . . . . . . . . . . . . 9
- 8.6. DesEncrypt() . . . . . . . . . . . . . . . . . . . . . . . . 10
- 8.7. GenerateAuthenticatorResponse() . . . . . . . . . . . . . . . 10
- 8.8. CheckAuthenticatorResponse() . . . . . . . . . . . . . . . . 12
- 8.9. NewPasswordEncryptedWithOldNtPasswordHash() . . . . . . . . . 12
- 8.10. EncryptPwBlockWithPasswordHash() . . . . . . . . . . . . . . 13
- 8.11. Rc4Encrypt() . . . . . . . . . . . . . . . . . . . . . . . . 13
- 8.12. OldNtPasswordHashEncryptedWithNewNtPasswordHash() . . . . . 14
- 8.13. NtPasswordHashEncryptedWithBlock() . . . . . . . . . . . . . 14
- 9. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
- 9.1. Negotiation Examples . . . . . . . . . . . . . . . . . . . . 14
- 9.1.1. Successful authentication . . . . . . . . . . . . . . . . . 15
- 9.1.2. Authenticator authentication failure . . . . . . . . . . . 15
- 9.1.3. Failed authentication with no retry allowed . . . . . . . . 15
- 9.1.4. Successful authentication after retry . . . . . . . . . . . 15
- 9.1.5. Failed hack attack with 3 attempts allowed . . . . . . . . 15
- 9.1.6. Successful authentication with password change . . . . . . 16
- 9.1.7. Successful authentication with retry and password change. . 16
- 9.2. Hash Example . . . . . . . . . . . . . . . . . . . . . . . . 16
- 9.3. Example of DES Key Generation . . . . . . . . . . . . . . . . 17
- 10. Security Considerations . . . . . . . . . . . . . . . . . . . 17
- 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18
- 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 19
- 13. Author's Address . . . . . . . . . . . . . . . . . . . . . . . 19
- 14. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 20
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 2]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-1. Introduction
-
- Where possible, MS-CHAP-V2 is consistent with both MS-CHAP-V1 and
- standard CHAP. Briefly, the differences between MS-CHAP-V2 and MS-
- CHAP-V1 are:
-
- * MS-CHAP-V2 is enabled by negotiating CHAP Algorithm 0x81 in LCP
- option 3, Authentication Protocol.
-
- * MS-CHAP-V2 provides mutual authentication between peers by
- piggybacking a peer challenge on the Response packet and an
- authenticator response on the Success packet.
-
- * The calculation of the "Windows NT compatible challenge response"
- sub-field in the Response packet has been changed to include the
- peer challenge and the user name.
-
- * In MS-CHAP-V1, the "LAN Manager compatible challenge response"
- sub-field was always sent in the Response packet. This field has
- been replaced in MS-CHAP-V2 by the Peer-Challenge field.
-
- * The format of the Message field in the Failure packet has been
- changed.
-
- * The Change Password (version 1) and Change Password (version 2)
- packets are no longer supported. They have been replaced with a
- single Change-Password packet.
-
-2. LCP Configuration
-
- The LCP configuration for MS-CHAP-V2 is identical to that for
- standard CHAP, except that the Algorithm field has value 0x81, rather
- than the MD5 value 0x05. PPP implementations which do not support
- MS-CHAP-V2, but correctly implement LCP Config-Rej, should have no
- problem dealing with this non-standard option.
-
-3. Challenge Packet
-
- The MS-CHAP-V2 Challenge packet is identical in format to the
- standard CHAP Challenge packet.
-
- MS-CHAP-V2 authenticators send an 16-octet challenge Value field.
- Peers need not duplicate Microsoft's algorithm for selecting the 16-
- octet value, but the standard guidelines on randomness [1,2,7] SHOULD
- be observed.
-
- Microsoft authenticators do not currently provide information in the
- Name field. This may change in the future.
-
-
-
-Zorn Informational [Page 3]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-4. Response Packet
-
- The MS-CHAP-V2 Response packet is identical in format to the standard
- CHAP Response packet. However, the Value field is sub-formatted
- differently as follows:
-
- 16 octets: Peer-Challenge
- 8 octets: Reserved, must be zero
- 24 octets: NT-Response
- 1 octet : Flags
-
- The Peer-Challenge field is a 16-octet random number. As the name
- implies, it is generated by the peer and is used in the calculation
- of the NT-Response field, below. Peers need not duplicate
- Microsoft's algorithm for selecting the 16-octet value, but the
- standard guidelines on randomness [1,2,7] SHOULD be observed.
-
- The NT-Response field is an encoded function of the password, the
- user name, the contents of the Peer-Challenge field and the received
- challenge as output by the routine GenerateNTResponse() (see section
- 8.1, below). The Windows NT password is a string of 0 to
- (theoretically) 256 case-sensitive Unicode [8] characters. Current
- versions of Windows NT limit passwords to 14 characters, mainly for
- compatibility reasons; this may change in the future. When computing
- the NT-Response field contents, only the user name is used, without
- any associated Windows NT domain name. This is true regardless of
- whether a Windows NT domain name is present in the Name field (see
- below).
-
- The Flag field is reserved for future use and MUST be zero.
-
- The Name field is a string of 0 to (theoretically) 256 case-sensitive
- ASCII characters which identifies the peer's user account name. The
- Windows NT domain name may prefix the user's account name (e.g.
- "BIGCO\johndoe" where "BIGCO" is a Windows NT domain containing the
- user account "johndoe"). If a domain is not provided, the backslash
- should also be omitted, (e.g. "johndoe").
-
-5. Success Packet
-
- The Success packet is identical in format to the standard CHAP
- Success packet. However, the Message field contains a 42-octet
- authenticator response string and a printable message. The format of
- the message field is illustrated below.
-
- "S=<auth_string> M=<message>"
-
-
-
-
-
-Zorn Informational [Page 4]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
- The <auth_string> quantity is a 20 octet number encoded in ASCII as
- 40 hexadecimal digits. The hexadecimal digits A-F (if present) MUST
- be uppercase. This number is derived from the challenge from the
- Challenge packet, the Peer-Challenge and NT-Response fields from the
- Response packet, and the peer password as output by the routine
- GenerateAuthenticatorResponse() (see section 8.7, below). The
- authenticating peer MUST verify the authenticator response when a
- Success packet is received. The method for verifying the
- authenticator is described in section 8.8, below. If the
- authenticator response is either missing or incorrect, the peer MUST
- end the session.
-
- The <message> quantity is human-readable text in the appropriate
- charset and language [12].
-
-6. Failure Packet
-
- The Failure packet is identical in format to the standard CHAP
- Failure packet. There is, however, formatted text stored in the
- Message field which, contrary to the standard CHAP rules, does affect
- the operation of the protocol. The Message field format is:
-
- "E=eeeeeeeeee R=r C=cccccccccccccccccccccccccccccccc V=vvvvvvvvvv
-M=<msg>"
-
- where
-
- The "eeeeeeeeee" is the ASCII representation of a decimal error
- code (need not be 10 digits) corresponding to one of those listed
- below, though implementations should deal with codes not on this
- list gracefully.
-
- 646 ERROR_RESTRICTED_LOGON_HOURS
- 647 ERROR_ACCT_DISABLED
- 648 ERROR_PASSWD_EXPIRED
- 649 ERROR_NO_DIALIN_PERMISSION
- 691 ERROR_AUTHENTICATION_FAILURE
- 709 ERROR_CHANGING_PASSWORD
-
- The "r" is an ASCII flag set to '1' if a retry is allowed, and '0'
- if not. When the authenticator sets this flag to '1' it disables
- short timeouts, expecting the peer to prompt the user for new
- credentials and resubmit the response.
-
- The "cccccccccccccccccccccccccccccccc" is the ASCII representation
- of a hexadecimal challenge value. This field MUST be exactly 32
- octets long and MUST be present.
-
-
-
-
-Zorn Informational [Page 5]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
- The "vvvvvvvvvv" is the ASCII representation of a decimal version
- code (need not be 10 digits) indicating the password changing
- protocol version supported on the server. For MS-CHAP-V2, this
- value SHOULD always be 3.
-
- <msg> is human-readable text in the appropriate charset and
- language [12].
-
-7. Change-Password Packet
-
- The Change-Password packet does not appear in either standard CHAP or
- MS-CHAP-V1. It allows the peer to change the password on the account
- specified in the preceding Response packet. The Change-Password
- packet should be sent only if the authenticator reports
- ERROR_PASSWD_EXPIRED (E=648) in the Message field of the Failure
- packet.
-
- This packet type is supported by recent versions of Windows NT 4.0,
- Windows 95 and Windows 98. It is not supported by Windows NT 3.5,
- Windows NT 3.51, or early versions of Windows NT 4.0, Windows 95 and
- Windows 98.
-
- The format of this packet is as follows:
-
- 1 octet : Code
- 1 octet : Identifier
- 2 octets : Length
- 516 octets : Encrypted-Password
- 16 octets : Encrypted-Hash
- 16 octets : Peer-Challenge
- 8 octets : Reserved
- 24 octets : NT-Response
- 2-octet : Flags
-
- Code
- 7
-
- Identifier
- The Identifier field is one octet and aids in matching requests
- and replies. The value is the Identifier of the received Failure
- packet to which this packet responds plus 1.
-
- Length
- 586
-
-
-
-
-
-
-
-Zorn Informational [Page 6]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
- Encrypted-Password
- This field contains the PWBLOCK form of the new Windows NT
- password encrypted with the old Windows NT password hash, as
- output by the NewPasswordEncryptedWithOldNtPasswordHash() routine
- (see section 8.9, below).
-
- Encrypted-Hash
- This field contains the old Windows NT password hash encrypted
- with the new Windows NT password hash, as output by the
- OldNtPasswordHashEncryptedWithNewNtPasswordHash() routine (see
- section 8.12, below).
-
- Peer-Challenge
- A 16-octet random quantity, as described in the Response packet
- description.
-
- Reserved
- 8 octets, must be zero.
-
- NT-Response
- The NT-Response field (as described in the Response packet
- description), but calculated on the new password and the challenge
- received in the Failure packet.
-
- Flags
- This field is two octets in length. It is a bit field of option
- flags where 0 is the least significant bit of the 16-bit quantity.
- The format of this field is illustrated in the following diagram:
-
- 1
- 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Bits 0-15
- Reserved, always clear (0).
-
-8. Pseudocode
-
- The routines mentioned in the text above are described in pseudocode
- in the following sections.
-
-8.1. GenerateNTResponse()
-
- GenerateNTResponse(
- IN 16-octet AuthenticatorChallenge,
- IN 16-octet PeerChallenge,
-
-
-
-Zorn Informational [Page 7]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
- IN 0-to-256-char UserName,
-
- IN 0-to-256-unicode-char Password,
- OUT 24-octet Response )
- {
- 8-octet Challenge
- 16-octet PasswordHash
-
- ChallengeHash( PeerChallenge, AuthenticatorChallenge, UserName,
- giving Challenge)
-
- NtPasswordHash( Password, giving PasswordHash )
- ChallengeResponse( Challenge, PasswordHash, giving Response )
- }
-
-8.2. ChallengeHash()
-
- ChallengeHash(
- IN 16-octet PeerChallenge,
- IN 16-octet AuthenticatorChallenge,
- IN 0-to-256-char UserName,
- OUT 8-octet Challenge
- {
-
- /*
- * SHAInit(), SHAUpdate() and SHAFinal() functions are an
- * implementation of Secure Hash Algorithm (SHA-1) [11]. These are
- * available in public domain or can be licensed from
- * RSA Data Security, Inc.
- */
-
- SHAInit(Context)
- SHAUpdate(Context, PeerChallenge, 16)
- SHAUpdate(Context, AuthenticatorChallenge, 16)
-
- /*
- * Only the user name (as presented by the peer and
- * excluding any prepended domain name)
- * is used as input to SHAUpdate().
- */
-
- SHAUpdate(Context, UserName, strlen(Username))
- SHAFinal(Context, Digest)
- memcpy(Challenge, Digest, 8)
- }
-
-
-
-
-
-
-Zorn Informational [Page 8]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-8.3. NtPasswordHash()
-
- NtPasswordHash(
- IN 0-to-256-unicode-char Password,
- OUT 16-octet PasswordHash )
- {
- /*
- * Use the MD4 algorithm [5] to irreversibly hash Password
- * into PasswordHash. Only the password is hashed without
- * including any terminating 0.
- */
- }
-
-8.4. HashNtPasswordHash()
-
- HashNtPasswordHash(
- IN 16-octet PasswordHash,
- OUT 16-octet PasswordHashHash )
- {
- /*
- * Use the MD4 algorithm [5] to irreversibly hash
- * PasswordHash into PasswordHashHash.
- */
- }
-
-8.5. ChallengeResponse()
-
- ChallengeResponse(
- IN 8-octet Challenge,
- IN 16-octet PasswordHash,
- OUT 24-octet Response )
- {
- Set ZPasswordHash to PasswordHash zero-padded to 21 octets
-
- DesEncrypt( Challenge,
- 1st 7-octets of ZPasswordHash,
- giving 1st 8-octets of Response )
-
- DesEncrypt( Challenge,
- 2nd 7-octets of ZPasswordHash,
- giving 2nd 8-octets of Response )
-
- DesEncrypt( Challenge,
- 3rd 7-octets of ZPasswordHash,
- giving 3rd 8-octets of Response )
- }
-
-
-
-
-
-Zorn Informational [Page 9]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-8.6. DesEncrypt()
-
- DesEncrypt(
- IN 8-octet Clear,
- IN 7-octet Key,
- OUT 8-octet Cypher )
- {
- /*
- * Use the DES encryption algorithm [4] in ECB mode [10]
- * to encrypt Clear into Cypher such that Cypher can
- * only be decrypted back to Clear by providing Key.
- * Note that the DES algorithm takes as input a 64-bit
- * stream where the 8th, 16th, 24th, etc. bits are
- * parity bits ignored by the encrypting algorithm.
- * Unless you write your own DES to accept 56-bit input
- * without parity, you will need to insert the parity bits
- * yourself.
- */
- }
-
-8.7. GenerateAuthenticatorResponse()
-
- GenerateAuthenticatorResponse(
- IN 0-to-256-unicode-char Password,
- IN 24-octet NT-Response,
- IN 16-octet PeerChallenge,
- IN 16-octet AuthenticatorChallenge,
- IN 0-to-256-char UserName,
- OUT 42-octet AuthenticatorResponse )
- {
- 16-octet PasswordHash
- 16-octet PasswordHashHash
- 8-octet Challenge
-
- /*
- * "Magic" constants used in response generation
- */
-
- Magic1[39] =
- {0x4D, 0x61, 0x67, 0x69, 0x63, 0x20, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6C, 0x69, 0x65,
- 0x6E, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67,
- 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74};
-
-
-
-
-
-
-
-
-Zorn Informational [Page 10]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
- Magic2[41] =
- {0x50, 0x61, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B,
- 0x65, 0x20, 0x69, 0x74, 0x20, 0x64, 0x6F, 0x20, 0x6D, 0x6F,
- 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6F, 0x6E,
- 0x65, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F,
- 0x6E};
-
- /*
- * Hash the password with MD4
- */
-
- NtPasswordHash( Password, giving PasswordHash )
-
- /*
- * Now hash the hash
- */
-
- HashNtPasswordHash( PasswordHash, giving PasswordHashHash)
-
- SHAInit(Context)
- SHAUpdate(Context, PasswordHashHash, 16)
- SHAUpdate(Context, NTResponse, 24)
- SHAUpdate(Context, Magic1, 39)
- SHAFinal(Context, Digest)
-
- ChallengeHash( PeerChallenge, AuthenticatorChallenge, UserName,
- giving Challenge)
-
- SHAInit(Context)
- SHAUpdate(Context, Digest, 20)
- SHAUpdate(Context, Challenge, 8)
- SHAUpdate(Context, Magic2, 41)
- SHAFinal(Context, Digest)
-
- /*
- * Encode the value of 'Digest' as "S=" followed by
- * 40 ASCII hexadecimal digits and return it in
- * AuthenticatorResponse.
- * For example,
- * "S=0123456789ABCDEF0123456789ABCDEF01234567"
- */
-
- }
-
-
-
-
-
-
-
-
-Zorn Informational [Page 11]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-8.8. CheckAuthenticatorResponse()
-
- CheckAuthenticatorResponse(
- IN 0-to-256-unicode-char Password,
- IN 24-octet NtResponse,
- IN 16-octet PeerChallenge,
- IN 16-octet AuthenticatorChallenge,
- IN 0-to-256-char UserName,
- IN 42-octet ReceivedResponse,
- OUT Boolean ResponseOK )
- {
-
- 20-octet MyResponse
-
- set ResponseOK = FALSE
- GenerateAuthenticatorResponse( Password, NtResponse, PeerChallenge,
- AuthenticatorChallenge, UserName,
- giving MyResponse)
-
- if (MyResponse = ReceivedResponse) then set ResponseOK = TRUE
- return ResponseOK
- }
-
-8.9. NewPasswordEncryptedWithOldNtPasswordHash()
-
- datatype-PWBLOCK
- {
- 256-unicode-char Password
- 4-octets PasswordLength
- }
-
- NewPasswordEncryptedWithOldNtPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT datatype-PWBLOCK EncryptedPwBlock )
- {
- NtPasswordHash( OldPassword, giving PasswordHash )
-
- EncryptPwBlockWithPasswordHash( NewPassword,
- PasswordHash,
- giving EncryptedPwBlock )
- }
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 12]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-8.10. EncryptPwBlockWithPasswordHash()
-
- EncryptPwBlockWithPasswordHash(
- IN 0-to-256-unicode-char Password,
- IN 16-octet PasswordHash,
- OUT datatype-PWBLOCK PwBlock )
- {
-
- Fill ClearPwBlock with random octet values
-
- PwSize = lstrlenW( Password ) * sizeof( unicode-char )
- PwOffset = sizeof( ClearPwBlock.Password ) - PwSize
- Move PwSize octets to (ClearPwBlock.Password + PwOffset ) from
- Password
- ClearPwBlock.PasswordLength = PwSize
- Rc4Encrypt( ClearPwBlock,
- sizeof( ClearPwBlock ),
- PasswordHash,
- sizeof( PasswordHash ),
- giving PwBlock )
- }
-
-8.11. Rc4Encrypt()
-
- Rc4Encrypt(
- IN x-octet Clear,
- IN integer ClearLength,
- IN y-octet Key,
- IN integer KeyLength,
- OUT x-octet Cypher )
- {
- /*
- * Use the RC4 encryption algorithm [6] to encrypt Clear of
- * length ClearLength octets into a Cypher of the same length
- * such that the Cypher can only be decrypted back to Clear
- * by providing a Key of length KeyLength octets.
- */
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 13]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-8.12. OldNtPasswordHashEncryptedWithNewNtPasswordHash()
-
- OldNtPasswordHashEncryptedWithNewNtPasswordHash(
- IN 0-to-256-unicode-char NewPassword,
- IN 0-to-256-unicode-char OldPassword,
- OUT 16-octet EncryptedPasswordHash )
- {
- NtPasswordHash( OldPassword, giving OldPasswordHash )
- NtPasswordHash( NewPassword, giving NewPasswordHash )
- NtPasswordHashEncryptedWithBlock( OldPasswordHash,
- NewPasswordHash,
- giving EncryptedPasswordHash )
- }
-
-8.13. NtPasswordHashEncryptedWithBlock()
-
- NtPasswordHashEncryptedWithBlock(
- IN 16-octet PasswordHash,
- IN 16-octet Block,
- OUT 16-octet Cypher )
- {
- DesEncrypt( 1st 8-octets PasswordHash,
- 1st 7-octets Block,
- giving 1st 8-octets Cypher )
-
- DesEncrypt( 2nd 8-octets PasswordHash,
- 2nd 7-octets Block,
- giving 2nd 8-octets Cypher )
- }
-
-9. Examples
-
- The following sections include protocol negotiation and hash
- generation examples.
-
-9.1. Negotiation Examples
-
- Here are some examples of typical negotiations. The peer is on the
- left and the authenticator is on the right.
-
- The packet sequence ID is incremented on each authentication retry
- response and on the change password response. All cases where the
- packet sequence ID is updated are noted below.
-
- Response retry is never allowed after Change Password. Change
- Password may occur after response retry.
-
-
-
-
-
-Zorn Informational [Page 14]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-9.1.1. Successful authentication
-
- <- Authenticator Challenge
- Peer Response/Challenge ->
- <- Success/Authenticator Response
-
- (Authenticator Response verification succeeds, call continues)
-
-9.1.2. Authenticator authentication failure
-
- <- Authenticator Challenge
- Peer Response/Challenge ->
- <- Success/Authenticator Response
-
- (Authenticator Response verification fails, peer disconnects)
-
-9.1.3. Failed authentication with no retry allowed
-
- <- Authenticator Challenge
- Peer Response/Challenge ->
- <- Failure (E=691 R=0)
-
- (Authenticator disconnects)
-
-9.1.4. Successful authentication after retry
-
- <- Authenticator Challenge
- Peer Response/Challenge ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to challenge in failure message ->
- <- Success/Authenticator Response
-
- (Authenticator Response verification succeeds, call continues)
-
-9.1.5. Failed hack attack with 3 attempts allowed
-
- <- Authenticator Challenge
- Peer Response/Challenge ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to challenge in Failure message ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to challenge in Failure message ->
- <- Failure (E=691 R=0)
-
-
-
-
-
-
-
-
-Zorn Informational [Page 15]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-9.1.6. Successful authentication with password change
-
- <- Authenticator Challenge
- Peer Response/Challenge ->
- <- Failure (E=648 R=0 V=3), disable short
- timeout
- ChangePassword (++ID) to challenge in Failure message ->
- <- Success/Authenticator Response
-
- (Authenticator Response verification succeeds, call continues)
-
-9.1.7. Successful authentication with retry and password change
-
- <- Authenticator Challenge
- Peer Response/Challenge ->
- <- Failure (E=691 R=1), disable short timeout
- Response (++ID) to first challenge+23 ->
- <- Failure (E=648 R=0 V=2), disable short
- timeout
- ChangePassword (++ID) to first challenge+23 ->
- <- Success/Authenticator Response
-
- (Authenticator Response verification succeeds, call continues)
-
-9.2. Hash Example
-
- Intermediate values for user name "User" and password "clientPass".
- All numeric values are hexadecimal.
-
-0-to-256-char UserName:
-55 73 65 72
-
-0-to-256-unicode-char Password:
-63 00 6C 00 69 00 65 00 6E 00 74 00 50 00 61 00 73 00 73 00
-
-16-octet AuthenticatorChallenge:
-5B 5D 7C 7D 7B 3F 2F 3E 3C 2C 60 21 32 26 26 28
-
-16-octet PeerChallenge:
-21 40 23 24 25 5E 26 2A 28 29 5F 2B 3A 33 7C 7E
-
-8-octet Challenge:
-D0 2E 43 86 BC E9 12 26
-
-16-octet PasswordHash:
-44 EB BA 8D 53 12 B8 D6 11 47 44 11 F5 69 89 AE
-
-
-
-
-
-Zorn Informational [Page 16]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-24 octet NT-Response:
-82 30 9E CD 8D 70 8B 5E A0 8F AA 39 81 CD 83 54 42 33 11 4A 3D 85 D6 DF
-
-16-octet PasswordHashHash:
-41 C0 0C 58 4B D2 D9 1C 40 17 A2 A1 2F A5 9F 3F
-
-42-octet AuthenticatorResponse:
-"S=407A5589115FD0D6209F510FE9C04566932CDA56"
-
-9.3. Example of DES Key Generation
-
- DES uses 56-bit keys, expanded to 64 bits by the insertion of parity
- bits. After the parity of the key has been fixed, every eighth bit
- is a parity bit and the number of bits that are set (1) in each octet
- is odd; i.e., odd parity. Note that many DES engines do not check
- parity, however, simply stripping the parity bits. The following
- example illustrates the values resulting from the use of the password
- "MyPw" to generate a pair of DES keys (e.g., for use in the
- NtPasswordHashEncryptedWithBlock() described in section 8.13).
-
- 0-to-256-unicode-char Password:
- 4D 79 50 77
-
- 16-octet PasswordHash:
- FC 15 6A F7 ED CD 6C 0E DD E3 33 7D 42 7F 4E AC
-
- First "raw" DES key (initial 7 octets of password hash):
- FC 15 6A F7 ED CD 6C
-
- First parity-corrected DES key (eight octets):
- FD 0B 5B 5E 7F 6E 34 D9
-
- Second "raw" DES key (second 7 octets of password hash)
- 0E DD E3 33 7D 42 7F
-
- Second parity-corrected DES key (eight octets):
- 0E 6E 79 67 37 EA 08 FE
-
-10. Security Considerations
-
- As an implementation detail, the authenticator SHOULD limit the
- number of password retries allowed to make brute-force password
- guessing attacks more difficult.
-
-
-
-
-
-
-
-
-Zorn Informational [Page 17]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-11. References
-
- [1] Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51, RFC
- 1661, July 1994.
-
- [2] Simpson, W., "PPP Challenge Handshake Authentication Protocol
- (CHAP)", RFC 1994, August 1996.
-
- [3] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
- [4] "Data Encryption Standard (DES)", Federal Information Processing
- Standard Publication 46-2, National Institute of Standards and
- Technology, December 1993.
-
- [5] Rivest, R., "MD4 Message Digest Algorithm", RFC 1320, April
- 1992.
-
- [6] RC4 is a proprietary encryption algorithm available under
- license from RSA Data Security Inc. For licensing information,
- contact:
-
- RSA Data Security, Inc.
- 100 Marine Parkway
- Redwood City, CA 94065-1031
-
- [7] Eastlake, D., Crocker, S. and J. Schiller, "Randomness
- Recommendations for Security", RFC 1750, December 1994.
-
- [8] "The Unicode Standard, Version 2.0", The Unicode Consortium,
- Addison-Wesley, 1996. ISBN 0-201-48345-9.
-
- [9] Zorn, G. and Cobb, S., "Microsoft PPP CHAP Extensions", RFC
- 2433, October 1998.
-
- [10] "DES Modes of Operation", Federal Information Processing
- Standards Publication 81, National Institute of Standards and
- Technology, December 1980.
-
- [11] "Secure Hash Standard", Federal Information Processing Standards
- Publication 180-1, National Institute of Standards and
- Technology, April 1995.
-
- [12] Zorn, G., "PPP LCP Internationalization Configuration Option",
- RFC 2484, January 1999.
-
-
-
-
-
-
-Zorn Informational [Page 18]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-12. Acknowledgements
-
- Thanks (in no particular order) to Bruce Johnson, Tony Bell, Paul
- Leach, Terence Spies, Dan Simon, Narendra Gidwani, Gurdeep Singh
- Pall, Jody Terrill, Brad Robel-Forrest, and Joe Davies for useful
- suggestions and feedback.
-
-13. Author's Address
-
- Questions about this memo can also be directed to:
-
- Glen Zorn
- Microsoft Corporation
- One Microsoft Way
- Redmond, Washington 98052
-
- Phone: +1 425 703 1559
- Fax: +1 425 936 7329
- EMail: gwz@acm.org
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 19]
-
-RFC 2759 Microsoft MS-CHAP-V2 January 2000
-
-
-14. Full Copyright Statement
-
- Copyright (C) The Internet Society (2000). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 20]
-
diff --git a/doc/rfc2865.txt b/doc/rfc2865.txt
deleted file mode 100644
index 10ec231..0000000
--- a/doc/rfc2865.txt
+++ /dev/null
@@ -1,4259 +0,0 @@
-
-
-
-
-
-
-Network Working Group C. Rigney
-Request for Comments: 2865 S. Willens
-Obsoletes: 2138 Livingston
-Category: Standards Track A. Rubens
- Merit
- W. Simpson
- Daydreamer
- June 2000
-
-
- Remote Authentication Dial In User Service (RADIUS)
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2000). All Rights Reserved.
-
-IESG Note:
-
- This protocol is widely implemented and used. Experience has shown
- that it can suffer degraded performance and lost data when used in
- large scale systems, in part because it does not include provisions
- for congestion control. Readers of this document may find it
- beneficial to track the progress of the IETF's AAA working group,
- which may develop a successor protocol that better addresses the
- scaling and congestion control issues.
-
-Abstract
-
- This document describes a protocol for carrying authentication,
- authorization, and configuration information between a Network Access
- Server which desires to authenticate its links and a shared
- Authentication Server.
-
-Implementation Note
-
- This memo documents the RADIUS protocol. The early deployment of
- RADIUS was done using UDP port number 1645, which conflicts with the
- "datametrics" service. The officially assigned port number for
- RADIUS is 1812.
-
-
-
-
-Rigney, et al. Standards Track [Page 1]
-
-RFC 2865 RADIUS June 2000
-
-
-Table of Contents
-
- 1. Introduction .......................................... 3
- 1.1 Specification of Requirements ................... 4
- 1.2 Terminology ..................................... 5
- 2. Operation ............................................. 5
- 2.1 Challenge/Response .............................. 7
- 2.2 Interoperation with PAP and CHAP ................ 8
- 2.3 Proxy ........................................... 8
- 2.4 Why UDP? ........................................ 11
- 2.5 Retransmission Hints ............................ 12
- 2.6 Keep-Alives Considered Harmful .................. 13
- 3. Packet Format ......................................... 13
- 4. Packet Types .......................................... 17
- 4.1 Access-Request .................................. 17
- 4.2 Access-Accept ................................... 18
- 4.3 Access-Reject ................................... 20
- 4.4 Access-Challenge ................................ 21
- 5. Attributes ............................................ 22
- 5.1 User-Name ....................................... 26
- 5.2 User-Password ................................... 27
- 5.3 CHAP-Password ................................... 28
- 5.4 NAS-IP-Address .................................. 29
- 5.5 NAS-Port ........................................ 30
- 5.6 Service-Type .................................... 31
- 5.7 Framed-Protocol ................................. 33
- 5.8 Framed-IP-Address ............................... 34
- 5.9 Framed-IP-Netmask ............................... 34
- 5.10 Framed-Routing .................................. 35
- 5.11 Filter-Id ....................................... 36
- 5.12 Framed-MTU ...................................... 37
- 5.13 Framed-Compression .............................. 37
- 5.14 Login-IP-Host ................................... 38
- 5.15 Login-Service ................................... 39
- 5.16 Login-TCP-Port .................................. 40
- 5.17 (unassigned) .................................... 41
- 5.18 Reply-Message ................................... 41
- 5.19 Callback-Number ................................. 42
- 5.20 Callback-Id ..................................... 42
- 5.21 (unassigned) .................................... 43
- 5.22 Framed-Route .................................... 43
- 5.23 Framed-IPX-Network .............................. 44
- 5.24 State ........................................... 45
- 5.25 Class ........................................... 46
- 5.26 Vendor-Specific ................................. 47
- 5.27 Session-Timeout ................................. 48
- 5.28 Idle-Timeout .................................... 49
- 5.29 Termination-Action .............................. 49
-
-
-
-Rigney, et al. Standards Track [Page 2]
-
-RFC 2865 RADIUS June 2000
-
-
- 5.30 Called-Station-Id ............................... 50
- 5.31 Calling-Station-Id .............................. 51
- 5.32 NAS-Identifier .................................. 52
- 5.33 Proxy-State ..................................... 53
- 5.34 Login-LAT-Service ............................... 54
- 5.35 Login-LAT-Node .................................. 55
- 5.36 Login-LAT-Group ................................. 56
- 5.37 Framed-AppleTalk-Link ........................... 57
- 5.38 Framed-AppleTalk-Network ........................ 58
- 5.39 Framed-AppleTalk-Zone ........................... 58
- 5.40 CHAP-Challenge .................................. 59
- 5.41 NAS-Port-Type ................................... 60
- 5.42 Port-Limit ...................................... 61
- 5.43 Login-LAT-Port .................................. 62
- 5.44 Table of Attributes ............................. 63
- 6. IANA Considerations ................................... 64
- 6.1 Definition of Terms ............................. 64
- 6.2 Recommended Registration Policies ............... 65
- 7. Examples .............................................. 66
- 7.1 User Telnet to Specified Host ................... 66
- 7.2 Framed User Authenticating with CHAP ............ 67
- 7.3 User with Challenge-Response card ............... 68
- 8. Security Considerations ............................... 71
- 9. Change Log ............................................ 71
- 10. References ............................................ 73
- 11. Acknowledgements ...................................... 74
- 12. Chair's Address ....................................... 74
- 13. Authors' Addresses .................................... 75
- 14. Full Copyright Statement .............................. 76
-
-1. Introduction
-
- This document obsoletes RFC 2138 [1]. A summary of the changes
- between this document and RFC 2138 is available in the "Change Log"
- appendix.
-
- Managing dispersed serial line and modem pools for large numbers of
- users can create the need for significant administrative support.
- Since modem pools are by definition a link to the outside world, they
- require careful attention to security, authorization and accounting.
- This can be best achieved by managing a single "database" of users,
- which allows for authentication (verifying user name and password) as
- well as configuration information detailing the type of service to
- deliver to the user (for example, SLIP, PPP, telnet, rlogin).
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 3]
-
-RFC 2865 RADIUS June 2000
-
-
- Key features of RADIUS are:
-
- Client/Server Model
-
- A Network Access Server (NAS) operates as a client of RADIUS. The
- client is responsible for passing user information to designated
- RADIUS servers, and then acting on the response which is returned.
-
- RADIUS servers are responsible for receiving user connection
- requests, authenticating the user, and then returning all
- configuration information necessary for the client to deliver
- service to the user.
-
- A RADIUS server can act as a proxy client to other RADIUS servers
- or other kinds of authentication servers.
-
- Network Security
-
- Transactions between the client and RADIUS server are
- authenticated through the use of a shared secret, which is never
- sent over the network. In addition, any user passwords are sent
- encrypted between the client and RADIUS server, to eliminate the
- possibility that someone snooping on an unsecure network could
- determine a user's password.
-
- Flexible Authentication Mechanisms
-
- The RADIUS server can support a variety of methods to authenticate
- a user. When it is provided with the user name and original
- password given by the user, it can support PPP PAP or CHAP, UNIX
- login, and other authentication mechanisms.
-
- Extensible Protocol
-
- All transactions are comprised of variable length Attribute-
- Length-Value 3-tuples. New attribute values can be added without
- disturbing existing implementations of the protocol.
-
-1.1. Specification of Requirements
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in BCP 14 [2]. These key
- words mean the same thing whether capitalized or not.
-
- An implementation is not compliant if it fails to satisfy one or more
- of the must or must not requirements for the protocols it implements.
- An implementation that satisfies all the must, must not, should and
-
-
-
-Rigney, et al. Standards Track [Page 4]
-
-RFC 2865 RADIUS June 2000
-
-
- should not requirements for its protocols is said to be
- "unconditionally compliant"; one that satisfies all the must and must
- not requirements but not all the should or should not requirements
- for its protocols is said to be "conditionally compliant".
-
- A NAS that does not implement a given service MUST NOT implement the
- RADIUS attributes for that service. For example, a NAS that is
- unable to offer ARAP service MUST NOT implement the RADIUS attributes
- for ARAP. A NAS MUST treat a RADIUS access-accept authorizing an
- unavailable service as an access-reject instead.
-
-1.2. Terminology
-
- This document frequently uses the following terms:
-
- service The NAS provides a service to the dial-in user, such as PPP
- or Telnet.
-
- session Each service provided by the NAS to a dial-in user
- constitutes a session, with the beginning of the session
- defined as the point where service is first provided and
- the end of the session defined as the point where service
- is ended. A user may have multiple sessions in parallel or
- series if the NAS supports that.
-
- silently discard
- This means the implementation discards the packet without
- further processing. The implementation SHOULD provide the
- capability of logging the error, including the contents of
- the silently discarded packet, and SHOULD record the event
- in a statistics counter.
-
-2. Operation
-
- When a client is configured to use RADIUS, any user of the client
- presents authentication information to the client. This might be
- with a customizable login prompt, where the user is expected to enter
- their username and password. Alternatively, the user might use a
- link framing protocol such as the Point-to-Point Protocol (PPP),
- which has authentication packets which carry this information.
-
- Once the client has obtained such information, it may choose to
- authenticate using RADIUS. To do so, the client creates an "Access-
- Request" containing such Attributes as the user's name, the user's
- password, the ID of the client and the Port ID which the user is
- accessing. When a password is present, it is hidden using a method
- based on the RSA Message Digest Algorithm MD5 [3].
-
-
-
-
-Rigney, et al. Standards Track [Page 5]
-
-RFC 2865 RADIUS June 2000
-
-
- The Access-Request is submitted to the RADIUS server via the network.
- If no response is returned within a length of time, the request is
- re-sent a number of times. The client can also forward requests to
- an alternate server or servers in the event that the primary server
- is down or unreachable. An alternate server can be used either after
- a number of tries to the primary server fail, or in a round-robin
- fashion. Retry and fallback algorithms are the topic of current
- research and are not specified in detail in this document.
-
- Once the RADIUS server receives the request, it validates the sending
- client. A request from a client for which the RADIUS server does not
- have a shared secret MUST be silently discarded. If the client is
- valid, the RADIUS server consults a database of users to find the
- user whose name matches the request. The user entry in the database
- contains a list of requirements which must be met to allow access for
- the user. This always includes verification of the password, but can
- also specify the client(s) or port(s) to which the user is allowed
- access.
-
- The RADIUS server MAY make requests of other servers in order to
- satisfy the request, in which case it acts as a client.
-
- If any Proxy-State attributes were present in the Access-Request,
- they MUST be copied unmodified and in order into the response packet.
- Other Attributes can be placed before, after, or even between the
- Proxy-State attributes.
-
- If any condition is not met, the RADIUS server sends an "Access-
- Reject" response indicating that this user request is invalid. If
- desired, the server MAY include a text message in the Access-Reject
- which MAY be displayed by the client to the user. No other
- Attributes (except Proxy-State) are permitted in an Access-Reject.
-
- If all conditions are met and the RADIUS server wishes to issue a
- challenge to which the user must respond, the RADIUS server sends an
- "Access-Challenge" response. It MAY include a text message to be
- displayed by the client to the user prompting for a response to the
- challenge, and MAY include a State attribute.
-
- If the client receives an Access-Challenge and supports
- challenge/response it MAY display the text message, if any, to the
- user, and then prompt the user for a response. The client then re-
- submits its original Access-Request with a new request ID, with the
- User-Password Attribute replaced by the response (encrypted), and
- including the State Attribute from the Access-Challenge, if any.
- Only 0 or 1 instances of the State Attribute SHOULD be
-
-
-
-
-
-Rigney, et al. Standards Track [Page 6]
-
-RFC 2865 RADIUS June 2000
-
-
- present in a request. The server can respond to this new Access-
- Request with either an Access-Accept, an Access-Reject, or another
- Access-Challenge.
-
- If all conditions are met, the list of configuration values for the
- user are placed into an "Access-Accept" response. These values
- include the type of service (for example: SLIP, PPP, Login User) and
- all necessary values to deliver the desired service. For SLIP and
- PPP, this may include values such as IP address, subnet mask, MTU,
- desired compression, and desired packet filter identifiers. For
- character mode users, this may include values such as desired
- protocol and host.
-
-2.1. Challenge/Response
-
- In challenge/response authentication, the user is given an
- unpredictable number and challenged to encrypt it and give back the
- result. Authorized users are equipped with special devices such as
- smart cards or software that facilitate calculation of the correct
- response with ease. Unauthorized users, lacking the appropriate
- device or software and lacking knowledge of the secret key necessary
- to emulate such a device or software, can only guess at the response.
-
- The Access-Challenge packet typically contains a Reply-Message
- including a challenge to be displayed to the user, such as a numeric
- value unlikely ever to be repeated. Typically this is obtained from
- an external server that knows what type of authenticator is in the
- possession of the authorized user and can therefore choose a random
- or non-repeating pseudorandom number of an appropriate radix and
- length.
-
- The user then enters the challenge into his device (or software) and
- it calculates a response, which the user enters into the client which
- forwards it to the RADIUS server via a second Access-Request. If the
- response matches the expected response the RADIUS server replies with
- an Access-Accept, otherwise an Access-Reject.
-
- Example: The NAS sends an Access-Request packet to the RADIUS Server
- with NAS-Identifier, NAS-Port, User-Name, User-Password (which may
- just be a fixed string like "challenge" or ignored). The server
- sends back an Access-Challenge packet with State and a Reply-Message
- along the lines of "Challenge 12345678, enter your response at the
- prompt" which the NAS displays. The NAS prompts for the response and
- sends a NEW Access-Request to the server (with a new ID) with NAS-
- Identifier, NAS-Port, User-Name, User-Password (the response just
- entered by the user, encrypted), and the same State Attribute that
-
-
-
-
-
-Rigney, et al. Standards Track [Page 7]
-
-RFC 2865 RADIUS June 2000
-
-
- came with the Access-Challenge. The server then sends back either an
- Access-Accept or Access-Reject based on whether the response matches
- the required value, or it can even send another Access-Challenge.
-
-2.2. Interoperation with PAP and CHAP
-
- For PAP, the NAS takes the PAP ID and password and sends them in an
- Access-Request packet as the User-Name and User-Password. The NAS MAY
- include the Attributes Service-Type = Framed-User and Framed-Protocol
- = PPP as a hint to the RADIUS server that PPP service is expected.
-
- For CHAP, the NAS generates a random challenge (preferably 16 octets)
- and sends it to the user, who returns a CHAP response along with a
- CHAP ID and CHAP username. The NAS then sends an Access-Request
- packet to the RADIUS server with the CHAP username as the User-Name
- and with the CHAP ID and CHAP response as the CHAP-Password
- (Attribute 3). The random challenge can either be included in the
- CHAP-Challenge attribute or, if it is 16 octets long, it can be
- placed in the Request Authenticator field of the Access-Request
- packet. The NAS MAY include the Attributes Service-Type = Framed-
- User and Framed-Protocol = PPP as a hint to the RADIUS server that
- PPP service is expected.
-
- The RADIUS server looks up a password based on the User-Name,
- encrypts the challenge using MD5 on the CHAP ID octet, that password,
- and the CHAP challenge (from the CHAP-Challenge attribute if present,
- otherwise from the Request Authenticator), and compares that result
- to the CHAP-Password. If they match, the server sends back an
- Access-Accept, otherwise it sends back an Access-Reject.
-
- If the RADIUS server is unable to perform the requested
- authentication it MUST return an Access-Reject. For example, CHAP
- requires that the user's password be available in cleartext to the
- server so that it can encrypt the CHAP challenge and compare that to
- the CHAP response. If the password is not available in cleartext to
- the RADIUS server then the server MUST send an Access-Reject to the
- client.
-
-2.3. Proxy
-
- With proxy RADIUS, one RADIUS server receives an authentication (or
- accounting) request from a RADIUS client (such as a NAS), forwards
- the request to a remote RADIUS server, receives the reply from the
- remote server, and sends that reply to the client, possibly with
- changes to reflect local administrative policy. A common use for
- proxy RADIUS is roaming. Roaming permits two or more administrative
- entities to allow each other's users to dial in to either entity's
- network for service.
-
-
-
-Rigney, et al. Standards Track [Page 8]
-
-RFC 2865 RADIUS June 2000
-
-
- The NAS sends its RADIUS access-request to the "forwarding server"
- which forwards it to the "remote server". The remote server sends a
- response (Access-Accept, Access-Reject, or Access-Challenge) back to
- the forwarding server, which sends it back to the NAS. The User-Name
- attribute MAY contain a Network Access Identifier [8] for RADIUS
- Proxy operations. The choice of which server receives the forwarded
- request SHOULD be based on the authentication "realm". The
- authentication realm MAY be the realm part of a Network Access
- Identifier (a "named realm"). Alternatively, the choice of which
- server receives the forwarded request MAY be based on whatever other
- criteria the forwarding server is configured to use, such as Called-
- Station-Id (a "numbered realm").
-
- A RADIUS server can function as both a forwarding server and a remote
- server, serving as a forwarding server for some realms and a remote
- server for other realms. One forwarding server can act as a
- forwarder for any number of remote servers. A remote server can have
- any number of servers forwarding to it and can provide authentication
- for any number of realms. One forwarding server can forward to
- another forwarding server to create a chain of proxies, although care
- must be taken to avoid introducing loops.
-
- The following scenario illustrates a proxy RADIUS communication
- between a NAS and the forwarding and remote RADIUS servers:
-
- 1. A NAS sends its access-request to the forwarding server.
-
- 2. The forwarding server forwards the access-request to the remote
- server.
-
- 3. The remote server sends an access-accept, access-reject or
- access-challenge back to the forwarding server. For this example,
- an access-accept is sent.
-
- 4. The forwarding server sends the access-accept to the NAS.
-
- The forwarding server MUST treat any Proxy-State attributes already
- in the packet as opaque data. Its operation MUST NOT depend on the
- content of Proxy-State attributes added by previous servers.
-
- If there are any Proxy-State attributes in the request received from
- the client, the forwarding server MUST include those Proxy-State
- attributes in its reply to the client. The forwarding server MAY
- include the Proxy-State attributes in the access-request when it
- forwards the request, or MAY omit them in the forwarded request. If
- the forwarding server omits the Proxy-State attributes in the
- forwarded access-request, it MUST attach them to the response before
- sending it to the client.
-
-
-
-Rigney, et al. Standards Track [Page 9]
-
-RFC 2865 RADIUS June 2000
-
-
- We now examine each step in more detail.
-
- 1. A NAS sends its access-request to the forwarding server. The
- forwarding server decrypts the User-Password, if present, using
- the shared secret it knows for the NAS. If a CHAP-Password
- attribute is present in the packet and no CHAP-Challenge attribute
- is present, the forwarding server MUST leave the Request-
- Authenticator untouched or copy it to a CHAP-Challenge attribute.
-
- '' The forwarding server MAY add one Proxy-State attribute to the
- packet. (It MUST NOT add more than one.) If it adds a Proxy-
- State, the Proxy-State MUST appear after any other Proxy-States in
- the packet. The forwarding server MUST NOT modify any other
- Proxy-States that were in the packet (it may choose not to forward
- them, but it MUST NOT change their contents). The forwarding
- server MUST NOT change the order of any attributes of the same
- type, including Proxy-State.
-
- 2. The forwarding server encrypts the User-Password, if present,
- using the secret it shares with the remote server, sets the
- Identifier as needed, and forwards the access-request to the
- remote server.
-
- 3. The remote server (if the final destination) verifies the user
- using User-Password, CHAP-Password, or such method as future
- extensions may dictate, and returns an access-accept, access-
- reject or access-challenge back to the forwarding server. For
- this example, an access-accept is sent. The remote server MUST
- copy all Proxy-State attributes (and only the Proxy-State
- attributes) in order from the access-request to the response
- packet, without modifying them.
-
- 4. The forwarding server verifies the Response Authenticator using
- the secret it shares with the remote server, and silently discards
- the packet if it fails verification. If the packet passes
- verification, the forwarding server removes the last Proxy-State
- (if it attached one), signs the Response Authenticator using the
- secret it shares with the NAS, restores the Identifier to match
- the one in the original request by the NAS, and sends the access-
- accept to the NAS.
-
- A forwarding server MAY need to modify attributes to enforce local
- policy. Such policy is outside the scope of this document, with the
- following restrictions. A forwarding server MUST not modify existing
- Proxy-State, State, or Class attributes present in the packet.
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 10]
-
-RFC 2865 RADIUS June 2000
-
-
- Implementers of forwarding servers should consider carefully which
- values it is willing to accept for Service-Type. Careful
- consideration must be given to the effects of passing along Service-
- Types of NAS-Prompt or Administrative in a proxied Access-Accept, and
- implementers may wish to provide mechanisms to block those or other
- service types, or other attributes. Such mechanisms are outside the
- scope of this document.
-
-2.4. Why UDP?
-
- A frequently asked question is why RADIUS uses UDP instead of TCP as
- a transport protocol. UDP was chosen for strictly technical reasons.
-
- There are a number of issues which must be understood. RADIUS is a
- transaction based protocol which has several interesting
- characteristics:
-
- 1. If the request to a primary Authentication server fails, a
- secondary server must be queried.
-
- To meet this requirement, a copy of the request must be kept above
- the transport layer to allow for alternate transmission. This
- means that retransmission timers are still required.
-
- 2. The timing requirements of this particular protocol are
- significantly different than TCP provides.
-
- At one extreme, RADIUS does not require a "responsive" detection
- of lost data. The user is willing to wait several seconds for the
- authentication to complete. The generally aggressive TCP
- retransmission (based on average round trip time) is not required,
- nor is the acknowledgement overhead of TCP.
-
- At the other extreme, the user is not willing to wait several
- minutes for authentication. Therefore the reliable delivery of
- TCP data two minutes later is not useful. The faster use of an
- alternate server allows the user to gain access before giving up.
-
- 3. The stateless nature of this protocol simplifies the use of UDP.
-
- Clients and servers come and go. Systems are rebooted, or are
- power cycled independently. Generally this does not cause a
- problem and with creative timeouts and detection of lost TCP
- connections, code can be written to handle anomalous events. UDP
- however completely eliminates any of this special handling. Each
- client and server can open their UDP transport just once and leave
- it open through all types of failure events on the network.
-
-
-
-
-Rigney, et al. Standards Track [Page 11]
-
-RFC 2865 RADIUS June 2000
-
-
- 4. UDP simplifies the server implementation.
-
- In the earliest implementations of RADIUS, the server was single
- threaded. This means that a single request was received,
- processed, and returned. This was found to be unmanageable in
- environments where the back-end security mechanism took real time
- (1 or more seconds). The server request queue would fill and in
- environments where hundreds of people were being authenticated
- every minute, the request turn-around time increased to longer
- than users were willing to wait (this was especially severe when a
- specific lookup in a database or over DNS took 30 or more
- seconds). The obvious solution was to make the server multi-
- threaded. Achieving this was simple with UDP. Separate processes
- were spawned to serve each request and these processes could
- respond directly to the client NAS with a simple UDP packet to the
- original transport of the client.
-
- It's not all a panacea. As noted, using UDP requires one thing which
- is built into TCP: with UDP we must artificially manage
- retransmission timers to the same server, although they don't require
- the same attention to timing provided by TCP. This one penalty is a
- small price to pay for the advantages of UDP in this protocol.
-
- Without TCP we would still probably be using tin cans connected by
- string. But for this particular protocol, UDP is a better choice.
-
-2.5. Retransmission Hints
-
- If the RADIUS server and alternate RADIUS server share the same
- shared secret, it is OK to retransmit the packet to the alternate
- RADIUS server with the same ID and Request Authenticator, because the
- content of the attributes haven't changed. If you want to use a new
- Request Authenticator when sending to the alternate server, you may.
-
- If you change the contents of the User-Password attribute (or any
- other attribute), you need a new Request Authenticator and therefore
- a new ID.
-
- If the NAS is retransmitting a RADIUS request to the same server as
- before, and the attributes haven't changed, you MUST use the same
- Request Authenticator, ID, and source port. If any attributes have
- changed, you MUST use a new Request Authenticator and ID.
-
- A NAS MAY use the same ID across all servers, or MAY keep track of
- IDs separately for each server, it is up to the implementer. If a
- NAS needs more than 256 IDs for outstanding requests, it MAY use
-
-
-
-
-
-Rigney, et al. Standards Track [Page 12]
-
-RFC 2865 RADIUS June 2000
-
-
- additional source ports to send requests from, and keep track of IDs
- for each source port. This allows up to 16 million or so outstanding
- requests at one time to a single server.
-
-2.6. Keep-Alives Considered Harmful
-
- Some implementers have adopted the practice of sending test RADIUS
- requests to see if a server is alive. This practice is strongly
- discouraged, since it adds to load and harms scalability without
- providing any additional useful information. Since a RADIUS request
- is contained in a single datagram, in the time it would take you to
- send a ping you could just send the RADIUS request, and getting a
- reply tells you that the RADIUS server is up. If you do not have a
- RADIUS request to send, it does not matter if the server is up or
- not, because you are not using it.
-
- If you want to monitor your RADIUS server, use SNMP. That's what
- SNMP is for.
-
-3. Packet Format
-
- Exactly one RADIUS packet is encapsulated in the UDP Data field [4],
- where the UDP Destination Port field indicates 1812 (decimal).
-
- When a reply is generated, the source and destination ports are
- reversed.
-
- This memo documents the RADIUS protocol. The early deployment of
- RADIUS was done using UDP port number 1645, which conflicts with the
- "datametrics" service. The officially assigned port number for
- RADIUS is 1812.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 13]
-
-RFC 2865 RADIUS June 2000
-
-
- A summary of the RADIUS data format is shown below. The fields are
- transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- The Code field is one octet, and identifies the type of RADIUS
- packet. When a packet is received with an invalid Code field, it
- is silently discarded.
-
- RADIUS Codes (decimal) are assigned as follows:
-
- 1 Access-Request
- 2 Access-Accept
- 3 Access-Reject
- 4 Accounting-Request
- 5 Accounting-Response
- 11 Access-Challenge
- 12 Status-Server (experimental)
- 13 Status-Client (experimental)
- 255 Reserved
-
- Codes 4 and 5 are covered in the RADIUS Accounting document [5].
- Codes 12 and 13 are reserved for possible use, but are not further
- mentioned here.
-
- Identifier
-
- The Identifier field is one octet, and aids in matching requests
- and replies. The RADIUS server can detect a duplicate request if
- it has the same client source IP address and source UDP port and
- Identifier within a short span of time.
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 14]
-
-RFC 2865 RADIUS June 2000
-
-
- Length
-
- The Length field is two octets. It indicates the length of the
- packet including the Code, Identifier, Length, Authenticator and
- Attribute fields. Octets outside the range of the Length field
- MUST be treated as padding and ignored on reception. If the
- packet is shorter than the Length field indicates, it MUST be
- silently discarded. The minimum length is 20 and maximum length
- is 4096.
-
- Authenticator
-
- The Authenticator field is sixteen (16) octets. The most
- significant octet is transmitted first. This value is used to
- authenticate the reply from the RADIUS server, and is used in the
- password hiding algorithm.
-
- Request Authenticator
-
- In Access-Request Packets, the Authenticator value is a 16
- octet random number, called the Request Authenticator. The
- value SHOULD be unpredictable and unique over the lifetime of a
- secret (the password shared between the client and the RADIUS
- server), since repetition of a request value in conjunction
- with the same secret would permit an attacker to reply with a
- previously intercepted response. Since it is expected that the
- same secret MAY be used to authenticate with servers in
- disparate geographic regions, the Request Authenticator field
- SHOULD exhibit global and temporal uniqueness.
-
- The Request Authenticator value in an Access-Request packet
- SHOULD also be unpredictable, lest an attacker trick a server
- into responding to a predicted future request, and then use the
- response to masquerade as that server to a future Access-
- Request.
-
- Although protocols such as RADIUS are incapable of protecting
- against theft of an authenticated session via realtime active
- wiretapping attacks, generation of unique unpredictable
- requests can protect against a wide range of active attacks
- against authentication.
-
- The NAS and RADIUS server share a secret. That shared secret
- followed by the Request Authenticator is put through a one-way
- MD5 hash to create a 16 octet digest value which is xored with
- the password entered by the user, and the xored result placed
-
-
-
-
-
-Rigney, et al. Standards Track [Page 15]
-
-RFC 2865 RADIUS June 2000
-
-
- in the User-Password attribute in the Access-Request packet.
- See the entry for User-Password in the section on Attributes
- for a more detailed description.
-
- Response Authenticator
-
- The value of the Authenticator field in Access-Accept, Access-
- Reject, and Access-Challenge packets is called the Response
- Authenticator, and contains a one-way MD5 hash calculated over
- a stream of octets consisting of: the RADIUS packet, beginning
- with the Code field, including the Identifier, the Length, the
- Request Authenticator field from the Access-Request packet, and
- the response Attributes, followed by the shared secret. That
- is, ResponseAuth =
- MD5(Code+ID+Length+RequestAuth+Attributes+Secret) where +
- denotes concatenation.
-
- Administrative Note
-
- The secret (password shared between the client and the RADIUS
- server) SHOULD be at least as large and unguessable as a well-
- chosen password. It is preferred that the secret be at least 16
- octets. This is to ensure a sufficiently large range for the
- secret to provide protection against exhaustive search attacks.
- The secret MUST NOT be empty (length 0) since this would allow
- packets to be trivially forged.
-
- A RADIUS server MUST use the source IP address of the RADIUS UDP
- packet to decide which shared secret to use, so that RADIUS
- requests can be proxied.
-
- When using a forwarding proxy, the proxy must be able to alter the
- packet as it passes through in each direction - when the proxy
- forwards the request, the proxy MAY add a Proxy-State Attribute,
- and when the proxy forwards a response, it MUST remove its Proxy-
- State Attribute if it added one. Proxy-State is always added or
- removed after any other Proxy-States, but no other assumptions
- regarding its location within the list of attributes can be made.
- Since Access-Accept and Access-Reject replies are authenticated on
- the entire packet contents, the stripping of the Proxy-State
- attribute invalidates the signature in the packet - so the proxy
- has to re-sign it.
-
- Further details of RADIUS proxy implementation are outside the
- scope of this document.
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 16]
-
-RFC 2865 RADIUS June 2000
-
-
-4. Packet Types
-
- The RADIUS Packet type is determined by the Code field in the first
- octet of the Packet.
-
-4.1. Access-Request
-
- Description
-
- Access-Request packets are sent to a RADIUS server, and convey
- information used to determine whether a user is allowed access to
- a specific NAS, and any special services requested for that user.
- An implementation wishing to authenticate a user MUST transmit a
- RADIUS packet with the Code field set to 1 (Access-Request).
-
- Upon receipt of an Access-Request from a valid client, an
- appropriate reply MUST be transmitted.
-
- An Access-Request SHOULD contain a User-Name attribute. It MUST
- contain either a NAS-IP-Address attribute or a NAS-Identifier
- attribute (or both).
-
- An Access-Request MUST contain either a User-Password or a CHAP-
- Password or a State. An Access-Request MUST NOT contain both a
- User-Password and a CHAP-Password. If future extensions allow
- other kinds of authentication information to be conveyed, the
- attribute for that can be used in an Access-Request instead of
- User-Password or CHAP-Password.
-
- An Access-Request SHOULD contain a NAS-Port or NAS-Port-Type
- attribute or both unless the type of access being requested does
- not involve a port or the NAS does not distinguish among its
- ports.
-
- An Access-Request MAY contain additional attributes as a hint to
- the server, but the server is not required to honor the hint.
-
- When a User-Password is present, it is hidden using a method based
- on the RSA Message Digest Algorithm MD5 [3].
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 17]
-
-RFC 2865 RADIUS June 2000
-
-
- A summary of the Access-Request packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Request Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 1 for Access-Request.
-
- Identifier
-
- The Identifier field MUST be changed whenever the content of the
- Attributes field changes, and whenever a valid reply has been
- received for a previous request. For retransmissions, the
- Identifier MUST remain unchanged.
-
- Request Authenticator
-
- The Request Authenticator value MUST be changed each time a new
- Identifier is used.
-
- Attributes
-
- The Attribute field is variable in length, and contains the list
- of Attributes that are required for the type of service, as well
- as any desired optional Attributes.
-
-4.2. Access-Accept
-
- Description
-
- Access-Accept packets are sent by the RADIUS server, and provide
- specific configuration information necessary to begin delivery of
- service to the user. If all Attribute values received in an
- Access-Request are acceptable then the RADIUS implementation MUST
- transmit a packet with the Code field set to 2 (Access-Accept).
-
-
-
-
-Rigney, et al. Standards Track [Page 18]
-
-RFC 2865 RADIUS June 2000
-
-
- On reception of an Access-Accept, the Identifier field is matched
- with a pending Access-Request. The Response Authenticator field
- MUST contain the correct response for the pending Access-Request.
- Invalid packets are silently discarded.
-
- A summary of the Access-Accept packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Response Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 2 for Access-Accept.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Access-Request which caused this Access-Accept.
-
- Response Authenticator
-
- The Response Authenticator value is calculated from the Access-
- Request value, as described earlier.
-
- Attributes
-
- The Attribute field is variable in length, and contains a list of
- zero or more Attributes.
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 19]
-
-RFC 2865 RADIUS June 2000
-
-
-4.3. Access-Reject
-
- Description
-
- If any value of the received Attributes is not acceptable, then
- the RADIUS server MUST transmit a packet with the Code field set
- to 3 (Access-Reject). It MAY include one or more Reply-Message
- Attributes with a text message which the NAS MAY display to the
- user.
-
- A summary of the Access-Reject packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Response Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 3 for Access-Reject.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Access-Request which caused this Access-Reject.
-
- Response Authenticator
-
- The Response Authenticator value is calculated from the Access-
- Request value, as described earlier.
-
- Attributes
-
- The Attribute field is variable in length, and contains a list of
- zero or more Attributes.
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 20]
-
-RFC 2865 RADIUS June 2000
-
-
-4.4. Access-Challenge
-
- Description
-
- If the RADIUS server desires to send the user a challenge
- requiring a response, then the RADIUS server MUST respond to the
- Access-Request by transmitting a packet with the Code field set to
- 11 (Access-Challenge).
-
- The Attributes field MAY have one or more Reply-Message
- Attributes, and MAY have a single State Attribute, or none.
- Vendor-Specific, Idle-Timeout, Session-Timeout and Proxy-State
- attributes MAY also be included. No other Attributes defined in
- this document are permitted in an Access-Challenge.
-
- On receipt of an Access-Challenge, the Identifier field is matched
- with a pending Access-Request. Additionally, the Response
- Authenticator field MUST contain the correct response for the
- pending Access-Request. Invalid packets are silently discarded.
-
- If the NAS does not support challenge/response, it MUST treat an
- Access-Challenge as though it had received an Access-Reject
- instead.
-
- If the NAS supports challenge/response, receipt of a valid
- Access-Challenge indicates that a new Access-Request SHOULD be
- sent. The NAS MAY display the text message, if any, to the user,
- and then prompt the user for a response. It then sends its
- original Access-Request with a new request ID and Request
- Authenticator, with the User-Password Attribute replaced by the
- user's response (encrypted), and including the State Attribute
- from the Access-Challenge, if any. Only 0 or 1 instances of the
- State Attribute can be present in an Access-Request.
-
- A NAS which supports PAP MAY forward the Reply-Message to the
- dialing client and accept a PAP response which it can use as
- though the user had entered the response. If the NAS cannot do
- so, it MUST treat the Access-Challenge as though it had received
- an Access-Reject instead.
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 21]
-
-RFC 2865 RADIUS June 2000
-
-
- A summary of the Access-Challenge packet format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Response Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 11 for Access-Challenge.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Access-Request which caused this Access-Challenge.
-
- Response Authenticator
-
- The Response Authenticator value is calculated from the Access-
- Request value, as described earlier.
-
- Attributes
-
- The Attributes field is variable in length, and contains a list of
- zero or more Attributes.
-
-5. Attributes
-
- RADIUS Attributes carry the specific authentication, authorization,
- information and configuration details for the request and reply.
-
- The end of the list of Attributes is indicated by the Length of the
- RADIUS packet.
-
- Some Attributes MAY be included more than once. The effect of this
- is Attribute specific, and is specified in each Attribute
- description. A summary table is provided at the end of the
- "Attributes" section.
-
-
-
-
-Rigney, et al. Standards Track [Page 22]
-
-RFC 2865 RADIUS June 2000
-
-
- If multiple Attributes with the same Type are present, the order of
- Attributes with the same Type MUST be preserved by any proxies. The
- order of Attributes of different Types is not required to be
- preserved. A RADIUS server or client MUST NOT have any dependencies
- on the order of attributes of different types. A RADIUS server or
- client MUST NOT require attributes of the same type to be contiguous.
-
- Where an Attribute's description limits which kinds of packet it can
- be contained in, this applies only to the packet types defined in
- this document, namely Access-Request, Access-Accept, Access-Reject
- and Access-Challenge (Codes 1, 2, 3, and 11). Other documents
- defining other packet types may also use Attributes described here.
- To determine which Attributes are allowed in Accounting-Request and
- Accounting-Response packets (Codes 4 and 5) refer to the RADIUS
- Accounting document [5].
-
- Likewise where packet types defined here state that only certain
- Attributes are permissible in them, future memos defining new
- Attributes should indicate which packet types the new Attributes may
- be present in.
-
- A summary of the Attribute format is shown below. The fields are
- transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | Value ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- The Type field is one octet. Up-to-date values of the RADIUS Type
- field are specified in the most recent "Assigned Numbers" RFC [6].
- Values 192-223 are reserved for experimental use, values 224-240
- are reserved for implementation-specific use, and values 241-255
- are reserved and should not be used.
-
- A RADIUS server MAY ignore Attributes with an unknown Type.
-
- A RADIUS client MAY ignore Attributes with an unknown Type.
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 23]
-
-RFC 2865 RADIUS June 2000
-
-
- This specification concerns the following values:
-
- 1 User-Name
- 2 User-Password
- 3 CHAP-Password
- 4 NAS-IP-Address
- 5 NAS-Port
- 6 Service-Type
- 7 Framed-Protocol
- 8 Framed-IP-Address
- 9 Framed-IP-Netmask
- 10 Framed-Routing
- 11 Filter-Id
- 12 Framed-MTU
- 13 Framed-Compression
- 14 Login-IP-Host
- 15 Login-Service
- 16 Login-TCP-Port
- 17 (unassigned)
- 18 Reply-Message
- 19 Callback-Number
- 20 Callback-Id
- 21 (unassigned)
- 22 Framed-Route
- 23 Framed-IPX-Network
- 24 State
- 25 Class
- 26 Vendor-Specific
- 27 Session-Timeout
- 28 Idle-Timeout
- 29 Termination-Action
- 30 Called-Station-Id
- 31 Calling-Station-Id
- 32 NAS-Identifier
- 33 Proxy-State
- 34 Login-LAT-Service
- 35 Login-LAT-Node
- 36 Login-LAT-Group
- 37 Framed-AppleTalk-Link
- 38 Framed-AppleTalk-Network
- 39 Framed-AppleTalk-Zone
- 40-59 (reserved for accounting)
- 60 CHAP-Challenge
- 61 NAS-Port-Type
- 62 Port-Limit
- 63 Login-LAT-Port
-
-
-
-
-
-Rigney, et al. Standards Track [Page 24]
-
-RFC 2865 RADIUS June 2000
-
-
- Length
-
- The Length field is one octet, and indicates the length of this
- Attribute including the Type, Length and Value fields. If an
- Attribute is received in an Access-Request but with an invalid
- Length, an Access-Reject SHOULD be transmitted. If an Attribute
- is received in an Access-Accept, Access-Reject or Access-Challenge
- packet with an invalid length, the packet MUST either be treated
- as an Access-Reject or else silently discarded.
-
- Value
-
- The Value field is zero or more octets and contains information
- specific to the Attribute. The format and length of the Value
- field is determined by the Type and Length fields.
-
- Note that none of the types in RADIUS terminate with a NUL (hex
- 00). In particular, types "text" and "string" in RADIUS do not
- terminate with a NUL (hex 00). The Attribute has a length field
- and does not use a terminator. Text contains UTF-8 encoded 10646
- [7] characters and String contains 8-bit binary data. Servers and
- servers and clients MUST be able to deal with embedded nulls.
- RADIUS implementers using C are cautioned not to use strcpy() when
- handling strings.
-
- The format of the value field is one of five data types. Note
- that type "text" is a subset of type "string".
-
- text 1-253 octets containing UTF-8 encoded 10646 [7]
- characters. Text of length zero (0) MUST NOT be sent;
- omit the entire attribute instead.
-
- string 1-253 octets containing binary data (values 0 through
- 255 decimal, inclusive). Strings of length zero (0)
- MUST NOT be sent; omit the entire attribute instead.
-
- address 32 bit value, most significant octet first.
-
- integer 32 bit unsigned value, most significant octet first.
-
- time 32 bit unsigned value, most significant octet first --
- seconds since 00:00:00 UTC, January 1, 1970. The
- standard Attributes do not use this data type but it is
- presented here for possible use in future attributes.
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 25]
-
-RFC 2865 RADIUS June 2000
-
-
-5.1. User-Name
-
- Description
-
- This Attribute indicates the name of the user to be authenticated.
- It MUST be sent in Access-Request packets if available.
-
- It MAY be sent in an Access-Accept packet, in which case the
- client SHOULD use the name returned in the Access-Accept packet in
- all Accounting-Request packets for this session. If the Access-
- Accept includes Service-Type = Rlogin and the User-Name attribute,
- a NAS MAY use the returned User-Name when performing the Rlogin
- function.
-
- A summary of the User-Name Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 1 for User-Name.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The NAS may limit the
- maximum length of the User-Name but the ability to handle at least
- 63 octets is recommended.
-
- The format of the username MAY be one of several forms:
-
- text Consisting only of UTF-8 encoded 10646 [7] characters.
-
- network access identifier
- A Network Access Identifier as described in RFC 2486
- [8].
-
- distinguished name
- A name in ASN.1 form used in Public Key authentication
- systems.
-
-
-
-Rigney, et al. Standards Track [Page 26]
-
-RFC 2865 RADIUS June 2000
-
-
-5.2. User-Password
-
- Description
-
- This Attribute indicates the password of the user to be
- authenticated, or the user's input following an Access-Challenge.
- It is only used in Access-Request packets.
-
- On transmission, the password is hidden. The password is first
- padded at the end with nulls to a multiple of 16 octets. A one-
- way MD5 hash is calculated over a stream of octets consisting of
- the shared secret followed by the Request Authenticator. This
- value is XORed with the first 16 octet segment of the password and
- placed in the first 16 octets of the String field of the User-
- Password Attribute.
-
- If the password is longer than 16 characters, a second one-way MD5
- hash is calculated over a stream of octets consisting of the
- shared secret followed by the result of the first xor. That hash
- is XORed with the second 16 octet segment of the password and
- placed in the second 16 octets of the String field of the User-
- Password Attribute.
-
- If necessary, this operation is repeated, with each xor result
- being used along with the shared secret to generate the next hash
- to xor the next segment of the password, to no more than 128
- characters.
-
- The method is taken from the book "Network Security" by Kaufman,
- Perlman and Speciner [9] pages 109-110. A more precise
- explanation of the method follows:
-
- Call the shared secret S and the pseudo-random 128-bit Request
- Authenticator RA. Break the password into 16-octet chunks p1, p2,
- etc. with the last one padded at the end with nulls to a 16-octet
- boundary. Call the ciphertext blocks c(1), c(2), etc. We'll need
- intermediate values b1, b2, etc.
-
- b1 = MD5(S + RA) c(1) = p1 xor b1
- b2 = MD5(S + c(1)) c(2) = p2 xor b2
- . .
- . .
- . .
- bi = MD5(S + c(i-1)) c(i) = pi xor bi
-
- The String will contain c(1)+c(2)+...+c(i) where + denotes
- concatenation.
-
-
-
-
-Rigney, et al. Standards Track [Page 27]
-
-RFC 2865 RADIUS June 2000
-
-
- On receipt, the process is reversed to yield the original
- password.
-
- A summary of the User-Password Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 2 for User-Password.
-
- Length
-
- At least 18 and no larger than 130.
-
- String
-
- The String field is between 16 and 128 octets long, inclusive.
-
-5.3. CHAP-Password
-
- Description
-
- This Attribute indicates the response value provided by a PPP
- Challenge-Handshake Authentication Protocol (CHAP) user in
- response to the challenge. It is only used in Access-Request
- packets.
-
- The CHAP challenge value is found in the CHAP-Challenge Attribute
- (60) if present in the packet, otherwise in the Request
- Authenticator field.
-
- A summary of the CHAP-Password Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | CHAP Ident | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 28]
-
-RFC 2865 RADIUS June 2000
-
-
- Type
-
- 3 for CHAP-Password.
-
- Length
-
- 19
-
- CHAP Ident
-
- This field is one octet, and contains the CHAP Identifier from the
- user's CHAP Response.
-
- String
-
- The String field is 16 octets, and contains the CHAP Response from
- the user.
-
-5.4. NAS-IP-Address
-
- Description
-
- This Attribute indicates the identifying IP Address of the NAS
- which is requesting authentication of the user, and SHOULD be
- unique to the NAS within the scope of the RADIUS server. NAS-IP-
- Address is only used in Access-Request packets. Either NAS-IP-
- Address or NAS-Identifier MUST be present in an Access-Request
- packet.
-
- Note that NAS-IP-Address MUST NOT be used to select the shared
- secret used to authenticate the request. The source IP address of
- the Access-Request packet MUST be used to select the shared
- secret.
-
- A summary of the NAS-IP-Address Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 4 for NAS-IP-Address.
-
-
-
-Rigney, et al. Standards Track [Page 29]
-
-RFC 2865 RADIUS June 2000
-
-
- Length
-
- 6
-
- Address
-
- The Address field is four octets.
-
-5.5. NAS-Port
-
- Description
-
- This Attribute indicates the physical port number of the NAS which
- is authenticating the user. It is only used in Access-Request
- packets. Note that this is using "port" in its sense of a
- physical connection on the NAS, not in the sense of a TCP or UDP
- port number. Either NAS-Port or NAS-Port-Type (61) or both SHOULD
- be present in an Access-Request packet, if the NAS differentiates
- among its ports.
-
- A summary of the NAS-Port Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 5 for NAS-Port.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 30]
-
-RFC 2865 RADIUS June 2000
-
-
-5.6. Service-Type
-
- Description
-
- This Attribute indicates the type of service the user has
- requested, or the type of service to be provided. It MAY be used
- in both Access-Request and Access-Accept packets. A NAS is not
- required to implement all of these service types, and MUST treat
- unknown or unsupported Service-Types as though an Access-Reject
- had been received instead.
-
- A summary of the Service-Type Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 6 for Service-Type.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 1 Login
- 2 Framed
- 3 Callback Login
- 4 Callback Framed
- 5 Outbound
- 6 Administrative
- 7 NAS Prompt
- 8 Authenticate Only
- 9 Callback NAS Prompt
- 10 Call Check
- 11 Callback Administrative
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 31]
-
-RFC 2865 RADIUS June 2000
-
-
- The service types are defined as follows when used in an Access-
- Accept. When used in an Access-Request, they MAY be considered to
- be a hint to the RADIUS server that the NAS has reason to believe
- the user would prefer the kind of service indicated, but the
- server is not required to honor the hint.
-
- Login The user should be connected to a host.
-
- Framed A Framed Protocol should be started for the
- User, such as PPP or SLIP.
-
- Callback Login The user should be disconnected and called
- back, then connected to a host.
-
- Callback Framed The user should be disconnected and called
- back, then a Framed Protocol should be started
- for the User, such as PPP or SLIP.
-
- Outbound The user should be granted access to outgoing
- devices.
-
- Administrative The user should be granted access to the
- administrative interface to the NAS from which
- privileged commands can be executed.
-
- NAS Prompt The user should be provided a command prompt
- on the NAS from which non-privileged commands
- can be executed.
-
- Authenticate Only Only Authentication is requested, and no
- authorization information needs to be returned
- in the Access-Accept (typically used by proxy
- servers rather than the NAS itself).
-
- Callback NAS Prompt The user should be disconnected and called
- back, then provided a command prompt on the
- NAS from which non-privileged commands can be
- executed.
-
- Call Check Used by the NAS in an Access-Request packet to
- indicate that a call is being received and
- that the RADIUS server should send back an
- Access-Accept to answer the call, or an
- Access-Reject to not accept the call,
- typically based on the Called-Station-Id or
- Calling-Station-Id attributes. It is
-
-
-
-
-
-Rigney, et al. Standards Track [Page 32]
-
-RFC 2865 RADIUS June 2000
-
-
- recommended that such Access-Requests use the
- value of Calling-Station-Id as the value of
- the User-Name.
-
- Callback Administrative
- The user should be disconnected and called
- back, then granted access to the
- administrative interface to the NAS from which
- privileged commands can be executed.
-
-5.7. Framed-Protocol
-
- Description
-
- This Attribute indicates the framing to be used for framed access.
- It MAY be used in both Access-Request and Access-Accept packets.
-
- A summary of the Framed-Protocol Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 7 for Framed-Protocol.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 1 PPP
- 2 SLIP
- 3 AppleTalk Remote Access Protocol (ARAP)
- 4 Gandalf proprietary SingleLink/MultiLink protocol
- 5 Xylogics proprietary IPX/SLIP
- 6 X.75 Synchronous
-
-
-
-
-
-Rigney, et al. Standards Track [Page 33]
-
-RFC 2865 RADIUS June 2000
-
-
-5.8. Framed-IP-Address
-
- Description
-
- This Attribute indicates the address to be configured for the
- user. It MAY be used in Access-Accept packets. It MAY be used in
- an Access-Request packet as a hint by the NAS to the server that
- it would prefer that address, but the server is not required to
- honor the hint.
-
- A summary of the Framed-IP-Address Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 8 for Framed-IP-Address.
-
- Length
-
- 6
-
- Address
-
- The Address field is four octets. The value 0xFFFFFFFF indicates
- that the NAS Should allow the user to select an address (e.g.
- Negotiated). The value 0xFFFFFFFE indicates that the NAS should
- select an address for the user (e.g. Assigned from a pool of
- addresses kept by the NAS). Other valid values indicate that the
- NAS should use that value as the user's IP address.
-
-5.9. Framed-IP-Netmask
-
- Description
-
- This Attribute indicates the IP netmask to be configured for the
- user when the user is a router to a network. It MAY be used in
- Access-Accept packets. It MAY be used in an Access-Request packet
- as a hint by the NAS to the server that it would prefer that
- netmask, but the server is not required to honor the hint.
-
-
-
-
-Rigney, et al. Standards Track [Page 34]
-
-RFC 2865 RADIUS June 2000
-
-
- A summary of the Framed-IP-Netmask Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 9 for Framed-IP-Netmask.
-
- Length
-
- 6
-
- Address
-
- The Address field is four octets specifying the IP netmask of the
- user.
-
-5.10. Framed-Routing
-
- Description
-
- This Attribute indicates the routing method for the user, when the
- user is a router to a network. It is only used in Access-Accept
- packets.
-
- A summary of the Framed-Routing Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 10 for Framed-Routing.
-
-
-
-
-
-Rigney, et al. Standards Track [Page 35]
-
-RFC 2865 RADIUS June 2000
-
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 0 None
- 1 Send routing packets
- 2 Listen for routing packets
- 3 Send and Listen
-
-5.11. Filter-Id
-
- Description
-
- This Attribute indicates the name of the filter list for this
- user. Zero or more Filter-Id attributes MAY be sent in an
- Access-Accept packet.
-
- Identifying a filter list by name allows the filter to be used on
- different NASes without regard to filter-list implementation
- details.
-
- A summary of the Filter-Id Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | Text ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 11 for Filter-Id.
-
- Length
-
- >= 3
-
- Text
-
- The Text field is one or more octets, and its contents are
- implementation dependent. It is intended to be human readable and
- MUST NOT affect operation of the protocol. It is recommended that
- the message contain UTF-8 encoded 10646 [7] characters.
-
-
-
-Rigney, et al. Standards Track [Page 36]
-
-RFC 2865 RADIUS June 2000
-
-
-5.12. Framed-MTU
-
- Description
-
- This Attribute indicates the Maximum Transmission Unit to be
- configured for the user, when it is not negotiated by some other
- means (such as PPP). It MAY be used in Access-Accept packets. It
- MAY be used in an Access-Request packet as a hint by the NAS to
- the server that it would prefer that value, but the server is not
- required to honor the hint.
-
- A summary of the Framed-MTU Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 12 for Framed-MTU.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. Despite the size of the field,
- values range from 64 to 65535.
-
-5.13. Framed-Compression
-
- Description
-
- This Attribute indicates a compression protocol to be used for the
- link. It MAY be used in Access-Accept packets. It MAY be used in
- an Access-Request packet as a hint to the server that the NAS
- would prefer to use that compression, but the server is not
- required to honor the hint.
-
- More than one compression protocol Attribute MAY be sent. It is
- the responsibility of the NAS to apply the proper compression
- protocol to appropriate link traffic.
-
-
-
-Rigney, et al. Standards Track [Page 37]
-
-RFC 2865 RADIUS June 2000
-
-
- A summary of the Framed-Compression Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 13 for Framed-Compression.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 0 None
- 1 VJ TCP/IP header compression [10]
- 2 IPX header compression
- 3 Stac-LZS compression
-
-5.14. Login-IP-Host
-
- Description
-
- This Attribute indicates the system with which to connect the user,
- when the Login-Service Attribute is included. It MAY be used in
- Access-Accept packets. It MAY be used in an Access-Request packet as
- a hint to the server that the NAS would prefer to use that host, but
- the server is not required to honor the hint.
-
- A summary of the Login-IP-Host Attribute format is shown below. The
- fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 38]
-
-RFC 2865 RADIUS June 2000
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Address
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Address (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 14 for Login-IP-Host.
-
- Length
-
- 6
-
- Address
-
- The Address field is four octets. The value 0xFFFFFFFF indicates
- that the NAS SHOULD allow the user to select an address. The
- value 0 indicates that the NAS SHOULD select a host to connect the
- user to. Other values indicate the address the NAS SHOULD connect
- the user to.
-
-5.15. Login-Service
-
- Description
-
- This Attribute indicates the service to use to connect the user to
- the login host. It is only used in Access-Accept packets.
-
- A summary of the Login-Service Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 15 for Login-Service.
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 39]
-
-RFC 2865 RADIUS June 2000
-
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 0 Telnet
- 1 Rlogin
- 2 TCP Clear
- 3 PortMaster (proprietary)
- 4 LAT
- 5 X25-PAD
- 6 X25-T3POS
- 8 TCP Clear Quiet (suppresses any NAS-generated connect string)
-
-5.16. Login-TCP-Port
-
- Description
-
- This Attribute indicates the TCP port with which the user is to be
- connected, when the Login-Service Attribute is also present. It
- is only used in Access-Accept packets.
-
- A summary of the Login-TCP-Port Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 16 for Login-TCP-Port.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. Despite the size of the field,
- values range from 0 to 65535.
-
-
-
-Rigney, et al. Standards Track [Page 40]
-
-RFC 2865 RADIUS June 2000
-
-
-5.17. (unassigned)
-
- Description
-
- ATTRIBUTE TYPE 17 HAS NOT BEEN ASSIGNED.
-
-5.18. Reply-Message
-
- Description
-
- This Attribute indicates text which MAY be displayed to the user.
-
- When used in an Access-Accept, it is the success message.
-
- When used in an Access-Reject, it is the failure message. It MAY
- indicate a dialog message to prompt the user before another
- Access-Request attempt.
-
- When used in an Access-Challenge, it MAY indicate a dialog message
- to prompt the user for a response.
-
- Multiple Reply-Message's MAY be included and if any are displayed,
- they MUST be displayed in the same order as they appear in the
- packet.
-
- A summary of the Reply-Message Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | Text ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 18 for Reply-Message.
-
- Length
-
- >= 3
-
- Text
-
- The Text field is one or more octets, and its contents are
- implementation dependent. It is intended to be human readable,
- and MUST NOT affect operation of the protocol. It is recommended
- that the message contain UTF-8 encoded 10646 [7] characters.
-
-
-
-Rigney, et al. Standards Track [Page 41]
-
-RFC 2865 RADIUS June 2000
-
-
-5.19. Callback-Number
-
- Description
-
- This Attribute indicates a dialing string to be used for callback.
- It MAY be used in Access-Accept packets. It MAY be used in an
- Access-Request packet as a hint to the server that a Callback
- service is desired, but the server is not required to honor the
- hint.
-
- A summary of the Callback-Number Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 19 for Callback-Number.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.20. Callback-Id
-
- Description
-
- This Attribute indicates the name of a place to be called, to be
- interpreted by the NAS. It MAY be used in Access-Accept packets.
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 42]
-
-RFC 2865 RADIUS June 2000
-
-
- A summary of the Callback-Id Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 20 for Callback-Id.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.21. (unassigned)
-
- Description
-
- ATTRIBUTE TYPE 21 HAS NOT BEEN ASSIGNED.
-
-5.22. Framed-Route
-
- Description
-
- This Attribute provides routing information to be configured for
- the user on the NAS. It is used in the Access-Accept packet and
- can appear multiple times.
-
- A summary of the Framed-Route Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | Text ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
-
-Rigney, et al. Standards Track [Page 43]
-
-RFC 2865 RADIUS June 2000
-
-
- Type
-
- 22 for Framed-Route.
-
- Length
-
- >= 3
-
- Text
-
- The Text field is one or more octets, and its contents are
- implementation dependent. It is intended to be human readable and
- MUST NOT affect operation of the protocol. It is recommended that
- the message contain UTF-8 encoded 10646 [7] characters.
-
- For IP routes, it SHOULD contain a destination prefix in dotted
- quad form optionally followed by a slash and a decimal length
- specifier stating how many high order bits of the prefix to use.
- That is followed by a space, a gateway address in dotted quad
- form, a space, and one or more metrics separated by spaces. For
- example, "192.168.1.0/24 192.168.1.1 1 2 -1 3 400". The length
- specifier may be omitted, in which case it defaults to 8 bits for
- class A prefixes, 16 bits for class B prefixes, and 24 bits for
- class C prefixes. For example, "192.168.1.0 192.168.1.1 1".
-
- Whenever the gateway address is specified as "0.0.0.0" the IP
- address of the user SHOULD be used as the gateway address.
-
-5.23. Framed-IPX-Network
-
- Description
-
- This Attribute indicates the IPX Network number to be configured
- for the user. It is used in Access-Accept packets.
-
- A summary of the Framed-IPX-Network Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 44]
-
-RFC 2865 RADIUS June 2000
-
-
- Type
-
- 23 for Framed-IPX-Network.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. The value 0xFFFFFFFE indicates
- that the NAS should select an IPX network for the user (e.g.
- assigned from a pool of one or more IPX networks kept by the NAS).
- Other values should be used as the IPX network for the link to the
- user.
-
-5.24. State
-
- Description
-
- This Attribute is available to be sent by the server to the client
- in an Access-Challenge and MUST be sent unmodified from the client
- to the server in the new Access-Request reply to that challenge,
- if any.
-
- This Attribute is available to be sent by the server to the client
- in an Access-Accept that also includes a Termination-Action
- Attribute with the value of RADIUS-Request. If the NAS performs
- the Termination-Action by sending a new Access-Request upon
- termination of the current session, it MUST include the State
- attribute unchanged in that Access-Request.
-
- In either usage, the client MUST NOT interpret the attribute
- locally. A packet must have only zero or one State Attribute.
- Usage of the State Attribute is implementation dependent.
-
- A summary of the State Attribute format is shown below. The fields
- are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 24 for State.
-
-
-
-Rigney, et al. Standards Track [Page 45]
-
-RFC 2865 RADIUS June 2000
-
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.25. Class
-
- Description
-
- This Attribute is available to be sent by the server to the client
- in an Access-Accept and SHOULD be sent unmodified by the client to
- the accounting server as part of the Accounting-Request packet if
- accounting is supported. The client MUST NOT interpret the
- attribute locally.
-
- A summary of the Class Attribute format is shown below. The fields
- are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 25 for Class.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-
-
-Rigney, et al. Standards Track [Page 46]
-
-RFC 2865 RADIUS June 2000
-
-
-5.26. Vendor-Specific
-
- Description
-
- This Attribute is available to allow vendors to support their own
- extended Attributes not suitable for general usage. It MUST not
- affect the operation of the RADIUS protocol.
-
- Servers not equipped to interpret the vendor-specific information
- sent by a client MUST ignore it (although it may be reported).
- Clients which do not receive desired vendor-specific information
- SHOULD make an attempt to operate without it, although they may do
- so (and report they are doing so) in a degraded mode.
-
- A summary of the Vendor-Specific Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Vendor-Id
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Vendor-Id (cont) | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 26 for Vendor-Specific.
-
- Length
-
- >= 7
-
- Vendor-Id
-
- The high-order octet is 0 and the low-order 3 octets are the SMI
- Network Management Private Enterprise Code of the Vendor in
- network byte order, as defined in the "Assigned Numbers" RFC [6].
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-
-
-
-Rigney, et al. Standards Track [Page 47]
-
-RFC 2865 RADIUS June 2000
-
-
- It SHOULD be encoded as a sequence of vendor type / vendor length
- / value fields, as follows. The Attribute-Specific field is
- dependent on the vendor's definition of that attribute. An
- example encoding of the Vendor-Specific attribute using this
- method follows:
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Vendor-Id
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Vendor-Id (cont) | Vendor type | Vendor length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attribute-Specific...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Multiple subattributes MAY be encoded within a single Vendor-
- Specific attribute, although they do not have to be.
-
-5.27. Session-Timeout
-
- Description
-
- This Attribute sets the maximum number of seconds of service to be
- provided to the user before termination of the session or prompt.
- This Attribute is available to be sent by the server to the client
- in an Access-Accept or Access-Challenge.
-
- A summary of the Session-Timeout Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 27 for Session-Timeout.
-
- Length
-
- 6
-
-
-
-
-
-Rigney, et al. Standards Track [Page 48]
-
-RFC 2865 RADIUS June 2000
-
-
- Value
-
- The field is 4 octets, containing a 32-bit unsigned integer with
- the maximum number of seconds this user should be allowed to
- remain connected by the NAS.
-
-5.28. Idle-Timeout
-
- Description
-
- This Attribute sets the maximum number of consecutive seconds of
- idle connection allowed to the user before termination of the
- session or prompt. This Attribute is available to be sent by the
- server to the client in an Access-Accept or Access-Challenge.
-
- A summary of the Idle-Timeout Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 28 for Idle-Timeout.
-
- Length
-
- 6
-
- Value
-
- The field is 4 octets, containing a 32-bit unsigned integer with
- the maximum number of consecutive seconds of idle time this user
- should be permitted before being disconnected by the NAS.
-
-5.29. Termination-Action
-
- Description
-
- This Attribute indicates what action the NAS should take when the
- specified service is completed. It is only used in Access-Accept
- packets.
-
-
-
-
-Rigney, et al. Standards Track [Page 49]
-
-RFC 2865 RADIUS June 2000
-
-
- A summary of the Termination-Action Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 29 for Termination-Action.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 0 Default
- 1 RADIUS-Request
-
- If the Value is set to RADIUS-Request, upon termination of the
- specified service the NAS MAY send a new Access-Request to the
- RADIUS server, including the State attribute if any.
-
-5.30. Called-Station-Id
-
- Description
-
- This Attribute allows the NAS to send in the Access-Request packet
- the phone number that the user called, using Dialed Number
- Identification (DNIS) or similar technology. Note that this may
- be different from the phone number the call comes in on. It is
- only used in Access-Request packets.
-
- A summary of the Called-Station-Id Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
-
-Rigney, et al. Standards Track [Page 50]
-
-RFC 2865 RADIUS June 2000
-
-
- Type
-
- 30 for Called-Station-Id.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, containing the phone
- number that the user's call came in on.
-
- The actual format of the information is site or application
- specific. UTF-8 encoded 10646 [7] characters are recommended, but
- a robust implementation SHOULD support the field as
- undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.31. Calling-Station-Id
-
- Description
-
- This Attribute allows the NAS to send in the Access-Request packet
- the phone number that the call came from, using Automatic Number
- Identification (ANI) or similar technology. It is only used in
- Access-Request packets.
-
- A summary of the Calling-Station-Id Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 31 for Calling-Station-Id.
-
- Length
-
- >= 3
-
-
-
-
-
-Rigney, et al. Standards Track [Page 51]
-
-RFC 2865 RADIUS June 2000
-
-
- String
-
- The String field is one or more octets, containing the phone
- number that the user placed the call from.
-
- The actual format of the information is site or application
- specific. UTF-8 encoded 10646 [7] characters are recommended, but
- a robust implementation SHOULD support the field as
- undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.32. NAS-Identifier
-
- Description
-
- This Attribute contains a string identifying the NAS originating
- the Access-Request. It is only used in Access-Request packets.
- Either NAS-IP-Address or NAS-Identifier MUST be present in an
- Access-Request packet.
-
- Note that NAS-Identifier MUST NOT be used to select the shared
- secret used to authenticate the request. The source IP address of
- the Access-Request packet MUST be used to select the shared
- secret.
-
- A summary of the NAS-Identifier Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 32 for NAS-Identifier.
-
- Length
-
- >= 3
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 52]
-
-RFC 2865 RADIUS June 2000
-
-
- String
-
- The String field is one or more octets, and should be unique to
- the NAS within the scope of the RADIUS server. For example, a
- fully qualified domain name would be suitable as a NAS-Identifier.
-
- The actual format of the information is site or application
- specific, and a robust implementation SHOULD support the field as
- undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.33. Proxy-State
-
- Description
-
- This Attribute is available to be sent by a proxy server to
- another server when forwarding an Access-Request and MUST be
- returned unmodified in the Access-Accept, Access-Reject or
- Access-Challenge. When the proxy server receives the response to
- its request, it MUST remove its own Proxy-State (the last Proxy-
- State in the packet) before forwarding the response to the NAS.
-
- If a Proxy-State Attribute is added to a packet when forwarding
- the packet, the Proxy-State Attribute MUST be added after any
- existing Proxy-State attributes.
-
- The content of any Proxy-State other than the one added by the
- current server should be treated as opaque octets and MUST NOT
- affect operation of the protocol.
-
- Usage of the Proxy-State Attribute is implementation dependent. A
- description of its function is outside the scope of this
- specification.
-
- A summary of the Proxy-State Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 33 for Proxy-State.
-
-
-
-Rigney, et al. Standards Track [Page 53]
-
-RFC 2865 RADIUS June 2000
-
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.34. Login-LAT-Service
-
- Description
-
- This Attribute indicates the system with which the user is to be
- connected by LAT. It MAY be used in Access-Accept packets, but
- only when LAT is specified as the Login-Service. It MAY be used
- in an Access-Request packet as a hint to the server, but the
- server is not required to honor the hint.
-
- Administrators use the service attribute when dealing with
- clustered systems, such as a VAX or Alpha cluster. In such an
- environment several different time sharing hosts share the same
- resources (disks, printers, etc.), and administrators often
- configure each to offer access (service) to each of the shared
- resources. In this case, each host in the cluster advertises its
- services through LAT broadcasts.
-
- Sophisticated users often know which service providers (machines)
- are faster and tend to use a node name when initiating a LAT
- connection. Alternately, some administrators want particular
- users to use certain machines as a primitive form of load
- balancing (although LAT knows how to do load balancing itself).
-
- A summary of the Login-LAT-Service Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 54]
-
-RFC 2865 RADIUS June 2000
-
-
- Type
-
- 34 for Login-LAT-Service.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets, and contains the identity
- of the LAT service to use. The LAT Architecture allows this
- string to contain $ (dollar), - (hyphen), . (period), _
- (underscore), numerics, upper and lower case alphabetics, and the
- ISO Latin-1 character set extension [11]. All LAT string
- comparisons are case insensitive.
-
-5.35. Login-LAT-Node
-
- Description
-
- This Attribute indicates the Node with which the user is to be
- automatically connected by LAT. It MAY be used in Access-Accept
- packets, but only when LAT is specified as the Login-Service. It
- MAY be used in an Access-Request packet as a hint to the server,
- but the server is not required to honor the hint.
-
- A summary of the Login-LAT-Node Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 35 for Login-LAT-Node.
-
- Length
-
- >= 3
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 55]
-
-RFC 2865 RADIUS June 2000
-
-
- String
-
- The String field is one or more octets, and contains the identity
- of the LAT Node to connect the user to. The LAT Architecture
- allows this string to contain $ (dollar), - (hyphen), . (period),
- _ (underscore), numerics, upper and lower case alphabetics, and
- the ISO Latin-1 character set extension. All LAT string
- comparisons are case insensitive.
-
-5.36. Login-LAT-Group
-
- Description
-
- This Attribute contains a string identifying the LAT group codes
- which this user is authorized to use. It MAY be used in Access-
- Accept packets, but only when LAT is specified as the Login-
- Service. It MAY be used in an Access-Request packet as a hint to
- the server, but the server is not required to honor the hint.
-
- LAT supports 256 different group codes, which LAT uses as a form
- of access rights. LAT encodes the group codes as a 256 bit
- bitmap.
-
- Administrators can assign one or more of the group code bits at
- the LAT service provider; it will only accept LAT connections that
- have these group codes set in the bit map. The administrators
- assign a bitmap of authorized group codes to each user; LAT gets
- these from the operating system, and uses these in its requests to
- the service providers.
-
- A summary of the Login-LAT-Group Attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 36 for Login-LAT-Group.
-
- Length
-
- 34
-
-
-
-
-
-Rigney, et al. Standards Track [Page 56]
-
-RFC 2865 RADIUS June 2000
-
-
- String
-
- The String field is a 32 octet bit map, most significant octet
- first. A robust implementation SHOULD support the field as
- undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.37. Framed-AppleTalk-Link
-
- Description
-
- This Attribute indicates the AppleTalk network number which should
- be used for the serial link to the user, which is another
- AppleTalk router. It is only used in Access-Accept packets. It
- is never used when the user is not another router.
-
- A summary of the Framed-AppleTalk-Link Attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 37 for Framed-AppleTalk-Link.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. Despite the size of the field,
- values range from 0 to 65535. The special value of 0 indicates
- that this is an unnumbered serial link. A value of 1-65535 means
- that the serial line between the NAS and the user should be
- assigned that value as an AppleTalk network number.
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 57]
-
-RFC 2865 RADIUS June 2000
-
-
-5.38. Framed-AppleTalk-Network
-
- Description
-
- This Attribute indicates the AppleTalk Network number which the
- NAS should probe to allocate an AppleTalk node for the user. It
- is only used in Access-Accept packets. It is never used when the
- user is another router. Multiple instances of this Attribute
- indicate that the NAS may probe using any of the network numbers
- specified.
-
- A summary of the Framed-AppleTalk-Network Attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 38 for Framed-AppleTalk-Network.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. Despite the size of the field,
- values range from 0 to 65535. The special value 0 indicates that
- the NAS should assign a network for the user, using its default
- cable range. A value between 1 and 65535 (inclusive) indicates
- the AppleTalk Network the NAS should probe to find an address for
- the user.
-
-5.39. Framed-AppleTalk-Zone
-
- Description
-
- This Attribute indicates the AppleTalk Default Zone to be used for
- this user. It is only used in Access-Accept packets. Multiple
- instances of this attribute in the same packet are not allowed.
-
-
-
-
-
-Rigney, et al. Standards Track [Page 58]
-
-RFC 2865 RADIUS June 2000
-
-
- A summary of the Framed-AppleTalk-Zone Attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 39 for Framed-AppleTalk-Zone.
-
- Length
-
- >= 3
-
- String
-
- The name of the Default AppleTalk Zone to be used for this user.
- A robust implementation SHOULD support the field as
- undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-5.40. CHAP-Challenge
-
- Description
-
- This Attribute contains the CHAP Challenge sent by the NAS to a
- PPP Challenge-Handshake Authentication Protocol (CHAP) user. It
- is only used in Access-Request packets.
-
- If the CHAP challenge value is 16 octets long it MAY be placed in
- the Request Authenticator field instead of using this attribute.
-
- A summary of the CHAP-Challenge Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 59]
-
-RFC 2865 RADIUS June 2000
-
-
- Type
-
- 60 for CHAP-Challenge.
-
- Length
-
- >= 7
-
- String
-
- The String field contains the CHAP Challenge.
-
-5.41. NAS-Port-Type
-
- Description
-
- This Attribute indicates the type of the physical port of the NAS
- which is authenticating the user. It can be used instead of or in
- addition to the NAS-Port (5) attribute. It is only used in
- Access-Request packets. Either NAS-Port (5) or NAS-Port-Type or
- both SHOULD be present in an Access-Request packet, if the NAS
- differentiates among its ports.
-
- A summary of the NAS-Port-Type Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 61 for NAS-Port-Type.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets. "Virtual" refers to a connection
- to the NAS via some transport protocol, instead of through a
- physical port. For example, if a user telnetted into a NAS to
-
-
-
-
-Rigney, et al. Standards Track [Page 60]
-
-RFC 2865 RADIUS June 2000
-
-
- authenticate himself as an Outbound-User, the Access-Request might
- include NAS-Port-Type = Virtual as a hint to the RADIUS server
- that the user was not on a physical port.
-
- 0 Async
- 1 Sync
- 2 ISDN Sync
- 3 ISDN Async V.120
- 4 ISDN Async V.110
- 5 Virtual
- 6 PIAFS
- 7 HDLC Clear Channel
- 8 X.25
- 9 X.75
- 10 G.3 Fax
- 11 SDSL - Symmetric DSL
- 12 ADSL-CAP - Asymmetric DSL, Carrierless Amplitude Phase
- Modulation
- 13 ADSL-DMT - Asymmetric DSL, Discrete Multi-Tone
- 14 IDSL - ISDN Digital Subscriber Line
- 15 Ethernet
- 16 xDSL - Digital Subscriber Line of unknown type
- 17 Cable
- 18 Wireless - Other
- 19 Wireless - IEEE 802.11
-
- PIAFS is a form of wireless ISDN commonly used in Japan, and
- stands for PHS (Personal Handyphone System) Internet Access Forum
- Standard (PIAFS).
-
-5.42. Port-Limit
-
- Description
-
- This Attribute sets the maximum number of ports to be provided to
- the user by the NAS. This Attribute MAY be sent by the server to
- the client in an Access-Accept packet. It is intended for use in
- conjunction with Multilink PPP [12] or similar uses. It MAY also
- be sent by the NAS to the server as a hint that that many ports
- are desired for use, but the server is not required to honor the
- hint.
-
- A summary of the Port-Limit Attribute format is shown below. The
- fields are transmitted from left to right.
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 61]
-
-RFC 2865 RADIUS June 2000
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 62 for Port-Limit.
-
- Length
-
- 6
-
- Value
-
- The field is 4 octets, containing a 32-bit unsigned integer with
- the maximum number of ports this user should be allowed to connect
- to on the NAS.
-
-5.43. Login-LAT-Port
-
- Description
-
- This Attribute indicates the Port with which the user is to be
- connected by LAT. It MAY be used in Access-Accept packets, but
- only when LAT is specified as the Login-Service. It MAY be used
- in an Access-Request packet as a hint to the server, but the
- server is not required to honor the hint.
-
- A summary of the Login-LAT-Port Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Type
-
- 63 for Login-LAT-Port.
-
- Length
-
- >= 3
-
-
-
-Rigney, et al. Standards Track [Page 62]
-
-RFC 2865 RADIUS June 2000
-
-
- String
-
- The String field is one or more octets, and contains the identity
- of the LAT port to use. The LAT Architecture allows this string
- to contain $ (dollar), - (hyphen), . (period), _ (underscore),
- numerics, upper and lower case alphabetics, and the ISO Latin-1
- character set extension. All LAT string comparisons are case
- insensitive.
-
-5.44. Table of Attributes
-
- The following table provides a guide to which attributes may be found
- in which kinds of packets, and in what quantity.
-
- Request Accept Reject Challenge # Attribute
- 0-1 0-1 0 0 1 User-Name
- 0-1 0 0 0 2 User-Password [Note 1]
- 0-1 0 0 0 3 CHAP-Password [Note 1]
- 0-1 0 0 0 4 NAS-IP-Address [Note 2]
- 0-1 0 0 0 5 NAS-Port
- 0-1 0-1 0 0 6 Service-Type
- 0-1 0-1 0 0 7 Framed-Protocol
- 0-1 0-1 0 0 8 Framed-IP-Address
- 0-1 0-1 0 0 9 Framed-IP-Netmask
- 0 0-1 0 0 10 Framed-Routing
- 0 0+ 0 0 11 Filter-Id
- 0-1 0-1 0 0 12 Framed-MTU
- 0+ 0+ 0 0 13 Framed-Compression
- 0+ 0+ 0 0 14 Login-IP-Host
- 0 0-1 0 0 15 Login-Service
- 0 0-1 0 0 16 Login-TCP-Port
- 0 0+ 0+ 0+ 18 Reply-Message
- 0-1 0-1 0 0 19 Callback-Number
- 0 0-1 0 0 20 Callback-Id
- 0 0+ 0 0 22 Framed-Route
- 0 0-1 0 0 23 Framed-IPX-Network
- 0-1 0-1 0 0-1 24 State [Note 1]
- 0 0+ 0 0 25 Class
- 0+ 0+ 0 0+ 26 Vendor-Specific
- 0 0-1 0 0-1 27 Session-Timeout
- 0 0-1 0 0-1 28 Idle-Timeout
- 0 0-1 0 0 29 Termination-Action
- 0-1 0 0 0 30 Called-Station-Id
- 0-1 0 0 0 31 Calling-Station-Id
- 0-1 0 0 0 32 NAS-Identifier [Note 2]
- 0+ 0+ 0+ 0+ 33 Proxy-State
- 0-1 0-1 0 0 34 Login-LAT-Service
- 0-1 0-1 0 0 35 Login-LAT-Node
-
-
-
-Rigney, et al. Standards Track [Page 63]
-
-RFC 2865 RADIUS June 2000
-
-
- 0-1 0-1 0 0 36 Login-LAT-Group
- 0 0-1 0 0 37 Framed-AppleTalk-Link
- 0 0+ 0 0 38 Framed-AppleTalk-Network
- 0 0-1 0 0 39 Framed-AppleTalk-Zone
- 0-1 0 0 0 60 CHAP-Challenge
- 0-1 0 0 0 61 NAS-Port-Type
- 0-1 0-1 0 0 62 Port-Limit
- 0-1 0-1 0 0 63 Login-LAT-Port
- Request Accept Reject Challenge # Attribute
-
- [Note 1] An Access-Request MUST contain either a User-Password or a
- CHAP-Password or State. An Access-Request MUST NOT contain both a
- User-Password and a CHAP-Password. If future extensions allow other
- kinds of authentication information to be conveyed, the attribute for
- that can be used in an Access-Request instead of User-Password or
- CHAP-Password.
-
- [Note 2] An Access-Request MUST contain either a NAS-IP-Address or a
- NAS-Identifier (or both).
-
- The following table defines the meaning of the above table entries.
-
-0 This attribute MUST NOT be present in packet.
-0+ Zero or more instances of this attribute MAY be present in packet.
-0-1 Zero or one instance of this attribute MAY be present in packet.
-1 Exactly one instance of this attribute MUST be present in packet.
-
-6. IANA Considerations
-
- This section provides guidance to the Internet Assigned Numbers
- Authority (IANA) regarding registration of values related to the
- RADIUS protocol, in accordance with BCP 26 [13].
-
- There are three name spaces in RADIUS that require registration:
- Packet Type Codes, Attribute Types, and Attribute Values (for certain
- Attributes).
-
- RADIUS is not intended as a general-purpose Network Access Server
- (NAS) management protocol, and allocations should not be made for
- purposes unrelated to Authentication, Authorization or Accounting.
-
-6.1. Definition of Terms
-
- The following terms are used here with the meanings defined in
- BCP 26: "name space", "assigned value", "registration".
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 64]
-
-RFC 2865 RADIUS June 2000
-
-
- The following policies are used here with the meanings defined in
- BCP 26: "Private Use", "First Come First Served", "Expert Review",
- "Specification Required", "IETF Consensus", "Standards Action".
-
-6.2. Recommended Registration Policies
-
- For registration requests where a Designated Expert should be
- consulted, the IESG Area Director for Operations should appoint the
- Designated Expert.
-
- For registration requests requiring Expert Review, the ietf-radius
- mailing list should be consulted.
-
- Packet Type Codes have a range from 1 to 254, of which 1-5,11-13 have
- been allocated. Because a new Packet Type has considerable impact on
- interoperability, a new Packet Type Code requires Standards Action,
- and should be allocated starting at 14.
-
- Attribute Types have a range from 1 to 255, and are the scarcest
- resource in RADIUS, thus must be allocated with care. Attributes
- 1-53,55,60-88,90-91 have been allocated, with 17 and 21 available for
- re-use. Attributes 17, 21, 54, 56-59, 89, 92-191 may be allocated
- following Expert Review, with Specification Required. Release of
- blocks of Attribute Types (more than 3 at a time for a given purpose)
- should require IETF Consensus. It is recommended that attributes 17
- and 21 be used only after all others are exhausted.
-
- Note that RADIUS defines a mechanism for Vendor-Specific extensions
- (Attribute 26) and the use of that should be encouraged instead of
- allocation of global attribute types, for functions specific only to
- one vendor's implementation of RADIUS, where no interoperability is
- deemed useful.
-
- As stated in the "Attributes" section above:
-
- "[Attribute Type] Values 192-223 are reserved for experimental
- use, values 224-240 are reserved for implementation-specific use,
- and values 241-255 are reserved and should not be used."
-
- Therefore Attribute values 192-240 are considered Private Use, and
- values 241-255 require Standards Action.
-
- Certain attributes (for example, NAS-Port-Type) in RADIUS define a
- list of values to correspond with various meanings. There can be 4
- billion (2^32) values for each attribute. Adding additional values to
- the list can be done on a First Come, First Served basis by the IANA.
-
-
-
-
-
-Rigney, et al. Standards Track [Page 65]
-
-RFC 2865 RADIUS June 2000
-
-
-7. Examples
-
- A few examples are presented to illustrate the flow of packets and
- use of typical attributes. These examples are not intended to be
- exhaustive, many others are possible. Hexadecimal dumps of the
- example packets are given in network byte order, using the shared
- secret "xyzzy5461".
-
-7.1. User Telnet to Specified Host
-
- The NAS at 192.168.1.16 sends an Access-Request UDP packet to the
- RADIUS Server for a user named nemo logging in on port 3 with
- password "arctangent".
-
- The Request Authenticator is a 16 octet random number generated by
- the NAS.
-
- The User-Password is 16 octets of password padded at end with nulls,
- XORed with MD5(shared secret|Request Authenticator).
-
- 01 00 00 38 0f 40 3f 94 73 97 80 57 bd 83 d5 cb
- 98 f4 22 7a 01 06 6e 65 6d 6f 02 12 0d be 70 8d
- 93 d4 13 ce 31 96 e4 3f 78 2a 0a ee 04 06 c0 a8
- 01 10 05 06 00 00 00 03
-
- 1 Code = Access-Request (1)
- 1 ID = 0
- 2 Length = 56
- 16 Request Authenticator
-
- Attributes:
- 6 User-Name = "nemo"
- 18 User-Password
- 6 NAS-IP-Address = 192.168.1.16
- 6 NAS-Port = 3
-
- The RADIUS server authenticates nemo, and sends an Access-Accept UDP
- packet to the NAS telling it to telnet nemo to host 192.168.1.3.
-
- The Response Authenticator is a 16-octet MD5 checksum of the code
- (2), id (0), Length (38), the Request Authenticator from above, the
- attributes in this reply, and the shared secret.
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 66]
-
-RFC 2865 RADIUS June 2000
-
-
- 02 00 00 26 86 fe 22 0e 76 24 ba 2a 10 05 f6 bf
- 9b 55 e0 b2 06 06 00 00 00 01 0f 06 00 00 00 00
- 0e 06 c0 a8 01 03
-
- 1 Code = Access-Accept (2)
- 1 ID = 0 (same as in Access-Request)
- 2 Length = 38
- 16 Response Authenticator
-
- Attributes:
- 6 Service-Type (6) = Login (1)
- 6 Login-Service (15) = Telnet (0)
- 6 Login-IP-Host (14) = 192.168.1.3
-
-7.2. Framed User Authenticating with CHAP
-
- The NAS at 192.168.1.16 sends an Access-Request UDP packet to the
- RADIUS Server for a user named flopsy logging in on port 20 with PPP,
- authenticating using CHAP. The NAS sends along the Service-Type and
- Framed-Protocol attributes as a hint to the RADIUS server that this
- user is looking for PPP, although the NAS is not required to do so.
-
- The Request Authenticator is a 16 octet random number generated by
- the NAS, and is also used as the CHAP Challenge.
-
- The CHAP-Password consists of a 1 octet CHAP ID, in this case 22,
- followed by the 16 octet CHAP response.
-
- 01 01 00 47 2a ee 86 f0 8d 0d 55 96 9c a5 97 8e
- 0d 33 67 a2 01 08 66 6c 6f 70 73 79 03 13 16 e9
- 75 57 c3 16 18 58 95 f2 93 ff 63 44 07 72 75 04
- 06 c0 a8 01 10 05 06 00 00 00 14 06 06 00 00 00
- 02 07 06 00 00 00 01
-
- 1 Code = 1 (Access-Request)
- 1 ID = 1
- 2 Length = 71
- 16 Request Authenticator
-
- Attributes:
- 8 User-Name (1) = "flopsy"
- 19 CHAP-Password (3)
- 6 NAS-IP-Address (4) = 192.168.1.16
- 6 NAS-Port (5) = 20
- 6 Service-Type (6) = Framed (2)
- 6 Framed-Protocol (7) = PPP (1)
-
-
-
-
-
-Rigney, et al. Standards Track [Page 67]
-
-RFC 2865 RADIUS June 2000
-
-
- The RADIUS server authenticates flopsy, and sends an Access-Accept
- UDP packet to the NAS telling it to start PPP service and assign an
- address for the user out of its dynamic address pool.
-
- The Response Authenticator is a 16-octet MD5 checksum of the code
- (2), id (1), Length (56), the Request Authenticator from above, the
- attributes in this reply, and the shared secret.
-
- 02 01 00 38 15 ef bc 7d ab 26 cf a3 dc 34 d9 c0
- 3c 86 01 a4 06 06 00 00 00 02 07 06 00 00 00 01
- 08 06 ff ff ff fe 0a 06 00 00 00 02 0d 06 00 00
- 00 01 0c 06 00 00 05 dc
-
- 1 Code = Access-Accept (2)
- 1 ID = 1 (same as in Access-Request)
- 2 Length = 56
- 16 Response Authenticator
-
- Attributes:
- 6 Service-Type (6) = Framed (2)
- 6 Framed-Protocol (7) = PPP (1)
- 6 Framed-IP-Address (8) = 255.255.255.254
- 6 Framed-Routing (10) = None (0)
- 6 Framed-Compression (13) = VJ TCP/IP Header Compression (1)
- 6 Framed-MTU (12) = 1500
-
-7.3. User with Challenge-Response card
-
- The NAS at 192.168.1.16 sends an Access-Request UDP packet to the
- RADIUS Server for a user named mopsy logging in on port 7. The user
- enters the dummy password "challenge" in this example. The challenge
- and response generated by the smart card for this example are
- "32769430" and "99101462".
-
- The Request Authenticator is a 16 octet random number generated by
- the NAS.
-
- The User-Password is 16 octets of password, in this case "challenge",
- padded at the end with nulls, XORed with MD5(shared secret|Request
- Authenticator).
-
- 01 02 00 39 f3 a4 7a 1f 6a 6d 76 71 0b 94 7a b9
- 30 41 a0 39 01 07 6d 6f 70 73 79 02 12 33 65 75
- 73 77 82 89 b5 70 88 5e 15 08 48 25 c5 04 06 c0
- a8 01 10 05 06 00 00 00 07
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 68]
-
-RFC 2865 RADIUS June 2000
-
-
- 1 Code = Access-Request (1)
- 1 ID = 2
- 2 Length = 57
- 16 Request Authenticator
-
- Attributes:
- 7 User-Name (1) = "mopsy"
- 18 User-Password (2)
- 6 NAS-IP-Address (4) = 192.168.1.16
- 6 NAS-Port (5) = 7
-
- The RADIUS server decides to challenge mopsy, sending back a
- challenge string and looking for a response. The RADIUS server
- therefore and sends an Access-Challenge UDP packet to the NAS.
-
- The Response Authenticator is a 16-octet MD5 checksum of the code
- (11), id (2), length (78), the Request Authenticator from above, the
- attributes in this reply, and the shared secret.
-
- The Reply-Message is "Challenge 32769430. Enter response at prompt."
-
- The State is a magic cookie to be returned along with user's
- response; in this example 8 octets of data (33 32 37 36 39 34 33 30
- in hex).
-
- 0b 02 00 4e 36 f3 c8 76 4a e8 c7 11 57 40 3c 0c
- 71 ff 9c 45 12 30 43 68 61 6c 6c 65 6e 67 65 20
- 33 32 37 36 39 34 33 30 2e 20 20 45 6e 74 65 72
- 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 72 6f
- 6d 70 74 2e 18 0a 33 32 37 36 39 34 33 30
-
- 1 Code = Access-Challenge (11)
- 1 ID = 2 (same as in Access-Request)
- 2 Length = 78
- 16 Response Authenticator
-
- Attributes:
- 48 Reply-Message (18)
- 10 State (24)
-
- The user enters his response, and the NAS send a new Access-Request
- with that response, and includes the State Attribute.
-
- The Request Authenticator is a new 16 octet random number.
-
- The User-Password is 16 octets of the user's response, in this case
- "99101462", padded at the end with nulls, XORed with MD5(shared
- secret|Request Authenticator).
-
-
-
-Rigney, et al. Standards Track [Page 69]
-
-RFC 2865 RADIUS June 2000
-
-
- The state is the magic cookie from the Access-Challenge packet,
- unchanged.
-
- 01 03 00 43 b1 22 55 6d 42 8a 13 d0 d6 25 38 07
- c4 57 ec f0 01 07 6d 6f 70 73 79 02 12 69 2c 1f
- 20 5f c0 81 b9 19 b9 51 95 f5 61 a5 81 04 06 c0
- a8 01 10 05 06 00 00 00 07 18 10 33 32 37 36 39
- 34 33 30
-
- 1 Code = Access-Request (1)
- 1 ID = 3 (Note that this changes.)
- 2 Length = 67
- 16 Request Authenticator
-
- Attributes:
- 7 User-Name = "mopsy"
- 18 User-Password
- 6 NAS-IP-Address (4) = 192.168.1.16
- 6 NAS-Port (5) = 7
- 10 State (24)
-
- The Response was incorrect (for the sake of example), so the RADIUS
- server tells the NAS to reject the login attempt.
-
- The Response Authenticator is a 16 octet MD5 checksum of the code
- (3), id (3), length(20), the Request Authenticator from above, the
- attributes in this reply (in this case, none), and the shared secret.
-
- 03 03 00 14 a4 2f 4f ca 45 91 6c 4e 09 c8 34 0f
- 9e 74 6a a0
-
- 1 Code = Access-Reject (3)
- 1 ID = 3 (same as in Access-Request)
- 2 Length = 20
- 16 Response Authenticator
-
- Attributes:
- (none, although a Reply-Message could be sent)
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 70]
-
-RFC 2865 RADIUS June 2000
-
-
-8. Security Considerations
-
- Security issues are the primary topic of this document.
-
- In practice, within or associated with each RADIUS server, there is a
- database which associates "user" names with authentication
- information ("secrets"). It is not anticipated that a particular
- named user would be authenticated by multiple methods. This would
- make the user vulnerable to attacks which negotiate the least secure
- method from among a set. Instead, for each named user there should
- be an indication of exactly one method used to authenticate that user
- name. If a user needs to make use of different authentication
- methods under different circumstances, then distinct user names
- SHOULD be employed, each of which identifies exactly one
- authentication method.
-
- Passwords and other secrets should be stored at the respective ends
- such that access to them is as limited as possible. Ideally, the
- secrets should only be accessible to the process requiring access in
- order to perform the authentication.
-
- The secrets should be distributed with a mechanism that limits the
- number of entities that handle (and thus gain knowledge of) the
- secret. Ideally, no unauthorized person should ever gain knowledge
- of the secrets. It is possible to achieve this with SNMP Security
- Protocols [14], but such a mechanism is outside the scope of this
- specification.
-
- Other distribution methods are currently undergoing research and
- experimentation. The SNMP Security document [14] also has an
- excellent overview of threats to network protocols.
-
- The User-Password hiding mechanism described in Section 5.2 has not
- been subjected to significant amounts of cryptanalysis in the
- published literature. Some in the IETF community are concerned that
- this method might not provide sufficient confidentiality protection
- [15] to passwords transmitted using RADIUS. Users should evaluate
- their threat environment and consider whether additional security
- mechanisms should be employed.
-
-9. Change Log
-
- The following changes have been made from RFC 2138:
-
- Strings should use UTF-8 instead of US-ASCII and should be handled as
- 8-bit data.
-
- Integers and dates are now defined as 32 bit unsigned values.
-
-
-
-Rigney, et al. Standards Track [Page 71]
-
-RFC 2865 RADIUS June 2000
-
-
- Updated list of attributes that can be included in Access-Challenge
- to be consistent with the table of attributes.
-
- User-Name mentions Network Access Identifiers.
-
- User-Name may now be sent in Access-Accept for use with accounting
- and Rlogin.
-
- Values added for Service-Type, Login-Service, Framed-Protocol,
- Framed-Compression, and NAS-Port-Type.
-
- NAS-Port can now use all 32 bits.
-
- Examples now include hexadecimal displays of the packets.
-
- Source UDP port must be used in conjunction with the Request
- Identifier when identifying duplicates.
-
- Multiple subattributes may be allowed in a Vendor-Specific attribute.
-
- An Access-Request is now required to contain either a NAS-IP-Address
- or NAS-Identifier (or may contain both).
-
- Added notes under "Operations" with more information on proxy,
- retransmissions, and keep-alives.
-
- If multiple Attributes with the same Type are present, the order of
- Attributes with the same Type MUST be preserved by any proxies.
-
- Clarified Proxy-State.
-
- Clarified that Attributes must not depend on position within the
- packet, as long as Attributes of the same type are kept in order.
-
- Added IANA Considerations section.
-
- Updated section on "Proxy" under "Operations".
-
- Framed-MTU can now be sent in Access-Request as a hint.
-
- Updated Security Considerations.
-
- Text strings identified as a subset of string, to clarify use of
- UTF-8.
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 72]
-
-RFC 2865 RADIUS June 2000
-
-
-10. References
-
- [1] Rigney, C., Rubens, A., Simpson, W. and S. Willens, "Remote
- Authentication Dial In User Service (RADIUS)", RFC 2138, April
- 1997.
-
- [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March, 1997.
-
- [3] Rivest, R. and S. Dusse, "The MD5 Message-Digest Algorithm",
- RFC 1321, April 1992.
-
- [4] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August
- 1980.
-
- [5] Rigney, C., "RADIUS Accounting", RFC 2866, June 2000.
-
- [6] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC
- 1700, October 1994.
-
- [7] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC
- 2279, January 1998.
-
- [8] Aboba, B. and M. Beadles, "The Network Access Identifier", RFC
- 2486, January 1999.
-
- [9] Kaufman, C., Perlman, R., and Speciner, M., "Network Security:
- Private Communications in a Public World", Prentice Hall, March
- 1995, ISBN 0-13-061466-1.
-
- [10] Jacobson, V., "Compressing TCP/IP headers for low-speed serial
- links", RFC 1144, February 1990.
-
- [11] ISO 8859. International Standard -- Information Processing --
- 8-bit Single-Byte Coded Graphic Character Sets -- Part 1: Latin
- Alphabet No. 1, ISO 8859-1:1987.
-
- [12] Sklower, K., Lloyd, B., McGregor, G., Carr, D. and T.
- Coradetti, "The PPP Multilink Protocol (MP)", RFC 1990, August
- 1996.
-
- [13] Alvestrand, H. and T. Narten, "Guidelines for Writing an IANA
- Considerations Section in RFCs", BCP 26, RFC 2434, October
- 1998.
-
- [14] Galvin, J., McCloghrie, K. and J. Davin, "SNMP Security
- Protocols", RFC 1352, July 1992.
-
-
-
-
-Rigney, et al. Standards Track [Page 73]
-
-RFC 2865 RADIUS June 2000
-
-
- [15] Dobbertin, H., "The Status of MD5 After a Recent Attack",
- CryptoBytes Vol.2 No.2, Summer 1996.
-
-11. Acknowledgements
-
- RADIUS was originally developed by Steve Willens of Livingston
- Enterprises for their PortMaster series of Network Access Servers.
-
-12. Chair's Address
-
- The working group can be contacted via the current chair:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- Phone: +1 925 737 2100
- EMail: cdr@telemancy.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 74]
-
-RFC 2865 RADIUS June 2000
-
-
-13. Authors' Addresses
-
- Questions about this memo can also be directed to:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- Phone: +1 925 737 2100
- EMail: cdr@telemancy.com
-
-
- Allan C. Rubens
- Merit Network, Inc.
- 4251 Plymouth Road
- Ann Arbor, Michigan 48105-2785
-
- EMail: acr@merit.edu
-
-
- William Allen Simpson
- Daydreamer
- Computer Systems Consulting Services
- 1384 Fontaine
- Madison Heights, Michigan 48071
-
- EMail: wsimpson@greendragon.com
-
-
- Steve Willens
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- EMail: steve@livingston.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 75]
-
-RFC 2865 RADIUS June 2000
-
-
-14. Full Copyright Statement
-
- Copyright (C) The Internet Society (2000). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Standards Track [Page 76]
-
diff --git a/doc/rfc2866.txt b/doc/rfc2866.txt
deleted file mode 100644
index 82da1dc..0000000
--- a/doc/rfc2866.txt
+++ /dev/null
@@ -1,1571 +0,0 @@
-
-
-
-
-
-
-Network Working Group C. Rigney
-Request for Comments: 2866 Livingston
-Category: Informational June 2000
-Obsoletes: 2139
-
-
- RADIUS Accounting
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2000). All Rights Reserved.
-
-Abstract
-
- This document describes a protocol for carrying accounting
- information between a Network Access Server and a shared Accounting
- Server.
-
-Implementation Note
-
- This memo documents the RADIUS Accounting protocol. The early
- deployment of RADIUS Accounting was done using UDP port number 1646,
- which conflicts with the "sa-msg-port" service. The officially
- assigned port number for RADIUS Accounting is 1813.
-
-Table of Contents
-
- 1. Introduction .................................... 2
- 1.1 Specification of Requirements ................. 3
- 1.2 Terminology ................................... 3
- 2. Operation ....................................... 4
- 2.1 Proxy ......................................... 4
- 3. Packet Format ................................... 5
- 4. Packet Types ................................... 7
- 4.1 Accounting-Request ............................ 8
- 4.2 Accounting-Response ........................... 9
- 5. Attributes ...................................... 10
- 5.1 Acct-Status-Type .............................. 12
- 5.2 Acct-Delay-Time ............................... 13
- 5.3 Acct-Input-Octets ............................. 14
- 5.4 Acct-Output-Octets ............................ 15
- 5.5 Acct-Session-Id ............................... 15
-
-
-
-Rigney Informational [Page 1]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- 5.6 Acct-Authentic ................................ 16
- 5.7 Acct-Session-Time ............................. 17
- 5.8 Acct-Input-Packets ............................ 18
- 5.9 Acct-Output-Packets ........................... 18
- 5.10 Acct-Terminate-Cause .......................... 19
- 5.11 Acct-Multi-Session-Id ......................... 21
- 5.12 Acct-Link-Count ............................... 22
- 5.13 Table of Attributes ........................... 23
- 6. IANA Considerations ............................. 25
- 7. Security Considerations ......................... 25
- 8. Change Log ...................................... 25
- 9. References ...................................... 26
- 10. Acknowledgements ................................ 26
- 11. Chair's Address ................................. 26
- 12. Author's Address ................................ 27
- 13. Full Copyright Statement ........................ 28
-
-1. Introduction
-
- Managing dispersed serial line and modem pools for large numbers of
- users can create the need for significant administrative support.
- Since modem pools are by definition a link to the outside world, they
- require careful attention to security, authorization and accounting.
- This can be best achieved by managing a single "database" of users,
- which allows for authentication (verifying user name and password) as
- well as configuration information detailing the type of service to
- deliver to the user (for example, SLIP, PPP, telnet, rlogin).
-
- The RADIUS (Remote Authentication Dial In User Service) document [2]
- specifies the RADIUS protocol used for Authentication and
- Authorization. This memo extends the use of the RADIUS protocol to
- cover delivery of accounting information from the Network Access
- Server (NAS) to a RADIUS accounting server.
-
- This document obsoletes RFC 2139 [1]. A summary of the changes
- between this document and RFC 2139 is available in the "Change Log"
- appendix.
-
- Key features of RADIUS Accounting are:
-
- Client/Server Model
-
- A Network Access Server (NAS) operates as a client of the
- RADIUS accounting server. The client is responsible for
- passing user accounting information to a designated RADIUS
- accounting server.
-
-
-
-
-
-Rigney Informational [Page 2]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- The RADIUS accounting server is responsible for receiving the
- accounting request and returning a response to the client
- indicating that it has successfully received the request.
-
- The RADIUS accounting server can act as a proxy client to
- other kinds of accounting servers.
-
- Network Security
-
- Transactions between the client and RADIUS accounting server
- are authenticated through the use of a shared secret, which is
- never sent over the network.
-
- Extensible Protocol
-
- All transactions are comprised of variable length Attribute-
- Length-Value 3-tuples. New attribute values can be added
- without disturbing existing implementations of the protocol.
-
-1.1. Specification of Requirements
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119 [3]. These
- key words mean the same thing whether capitalized or not.
-
-1.2. Terminology
-
- This document uses the following terms:
-
- service The NAS provides a service to the dial-in user, such as PPP
- or Telnet.
-
- session Each service provided by the NAS to a dial-in user
- constitutes a session, with the beginning of the session
- defined as the point where service is first provided and
- the end of the session defined as the point where service
- is ended. A user may have multiple sessions in parallel or
- series if the NAS supports that, with each session
- generating a separate start and stop accounting record with
- its own Acct-Session-Id.
-
- silently discard
- This means the implementation discards the packet without
- further processing. The implementation SHOULD provide the
- capability of logging the error, including the contents of
- the silently discarded packet, and SHOULD record the event
- in a statistics counter.
-
-
-
-Rigney Informational [Page 3]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
-2. Operation
-
- When a client is configured to use RADIUS Accounting, at the start of
- service delivery it will generate an Accounting Start packet
- describing the type of service being delivered and the user it is
- being delivered to, and will send that to the RADIUS Accounting
- server, which will send back an acknowledgement that the packet has
- been received. At the end of service delivery the client will
- generate an Accounting Stop packet describing the type of service
- that was delivered and optionally statistics such as elapsed time,
- input and output octets, or input and output packets. It will send
- that to the RADIUS Accounting server, which will send back an
- acknowledgement that the packet has been received.
-
- The Accounting-Request (whether for Start or Stop) is submitted to
- the RADIUS accounting server via the network. It is recommended that
- the client continue attempting to send the Accounting-Request packet
- until it receives an acknowledgement, using some form of backoff. If
- no response is returned within a length of time, the request is re-
- sent a number of times. The client can also forward requests to an
- alternate server or servers in the event that the primary server is
- down or unreachable. An alternate server can be used either after a
- number of tries to the primary server fail, or in a round-robin
- fashion. Retry and fallback algorithms are the topic of current
- research and are not specified in detail in this document.
-
- The RADIUS accounting server MAY make requests of other servers in
- order to satisfy the request, in which case it acts as a client.
-
- If the RADIUS accounting server is unable to successfully record the
- accounting packet it MUST NOT send an Accounting-Response
- acknowledgment to the client.
-
-2.1. Proxy
-
- See the "RADIUS" RFC [2] for information on Proxy RADIUS. Proxy
- Accounting RADIUS works the same way, as illustrated by the following
- example.
-
- 1. The NAS sends an accounting-request to the forwarding server.
-
- 2. The forwarding server logs the accounting-request (if desired),
- adds its Proxy-State (if desired) after any other Proxy-State
- attributes, updates the Request Authenticator, and forwards the
- request to the remote server.
-
-
-
-
-
-
-Rigney Informational [Page 4]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- 3. The remote server logs the accounting-request (if desired),
- copies all Proxy-State attributes in order and unmodified from
- the request to the response packet, and sends the accounting-
- response to the forwarding server.
-
- 4. The forwarding server strips the last Proxy-State (if it added
- one in step 2), updates the Response Authenticator and sends
- the accounting-response to the NAS.
-
- A forwarding server MUST not modify existing Proxy-State or Class
- attributes present in the packet.
-
- A forwarding server may either perform its forwarding function in a
- pass through manner, where it sends retransmissions on as soon as it
- gets them, or it may take responsibility for retransmissions, for
- example in cases where the network link between forwarding and remote
- server has very different characteristics than the link between NAS
- and forwarding server.
-
- Extreme care should be used when implementing a proxy server that
- takes responsibility for retransmissions so that its retransmission
- policy is robust and scalable.
-
-3. Packet Format
-
- Exactly one RADIUS Accounting packet is encapsulated in the UDP Data
- field [4], where the UDP Destination Port field indicates 1813
- (decimal).
-
- When a reply is generated, the source and destination ports are
- reversed.
-
- This memo documents the RADIUS Accounting protocol. The early
- deployment of RADIUS Accounting was done using UDP port number 1646,
- which conflicts with the "sa-msg-port" service. The officially
- assigned port number for RADIUS Accounting is 1813.
-
- A summary of the RADIUS data format is shown below. The fields are
- transmitted from left to right.
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 5]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
- Code
-
- The Code field is one octet, and identifies the type of RADIUS
- packet. When a packet is received with an invalid Code field, it
- is silently discarded.
-
- RADIUS Accounting Codes (decimal) are assigned as follows:
-
- 4 Accounting-Request
- 5 Accounting-Response
-
- Identifier
-
- The Identifier field is one octet, and aids in matching requests
- and replies. The RADIUS server can detect a duplicate request if
- it has the same client source IP address and source UDP port and
- Identifier within a short span of time.
-
- Length
-
- The Length field is two octets. It indicates the length of the
- packet including the Code, Identifier, Length, Authenticator and
- Attribute fields. Octets outside the range of the Length field
- MUST be treated as padding and ignored on reception. If the
- packet is shorter than the Length field indicates, it MUST be
- silently discarded. The minimum length is 20 and maximum length
- is 4095.
-
- Authenticator
-
- The Authenticator field is sixteen (16) octets. The most
- significant octet is transmitted first. This value is used to
- authenticate the messages between the client and RADIUS accounting
- server.
-
-
-
-Rigney Informational [Page 6]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- Request Authenticator
-
- In Accounting-Request Packets, the Authenticator value is a 16
- octet MD5 [5] checksum, called the Request Authenticator.
-
- The NAS and RADIUS accounting server share a secret. The Request
- Authenticator field in Accounting-Request packets contains a one-
- way MD5 hash calculated over a stream of octets consisting of the
- Code + Identifier + Length + 16 zero octets + request attributes +
- shared secret (where + indicates concatenation). The 16 octet MD5
- hash value is stored in the Authenticator field of the
- Accounting-Request packet.
-
- Note that the Request Authenticator of an Accounting-Request can
- not be done the same way as the Request Authenticator of a RADIUS
- Access-Request, because there is no User-Password attribute in an
- Accounting-Request.
-
- Response Authenticator
-
- The Authenticator field in an Accounting-Response packet is called
- the Response Authenticator, and contains a one-way MD5 hash
- calculated over a stream of octets consisting of the Accounting-
- Response Code, Identifier, Length, the Request Authenticator field
- from the Accounting-Request packet being replied to, and the
- response attributes if any, followed by the shared secret. The
- resulting 16 octet MD5 hash value is stored in the Authenticator
- field of the Accounting-Response packet.
-
- Attributes
-
- Attributes may have multiple instances, in such a case the order
- of attributes of the same type SHOULD be preserved. The order of
- attributes of different types is not required to be preserved.
-
-4. Packet Types
-
- The RADIUS packet type is determined by the Code field in the first
- octet of the packet.
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 7]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
-4.1. Accounting-Request
-
- Description
-
- Accounting-Request packets are sent from a client (typically a
- Network Access Server or its proxy) to a RADIUS accounting server,
- and convey information used to provide accounting for a service
- provided to a user. The client transmits a RADIUS packet with the
- Code field set to 4 (Accounting-Request).
-
- Upon receipt of an Accounting-Request, the server MUST transmit an
- Accounting-Response reply if it successfully records the
- accounting packet, and MUST NOT transmit any reply if it fails to
- record the accounting packet.
-
- Any attribute valid in a RADIUS Access-Request or Access-Accept
- packet is valid in a RADIUS Accounting-Request packet, except that
- the following attributes MUST NOT be present in an Accounting-
- Request: User-Password, CHAP-Password, Reply-Message, State.
- Either NAS-IP-Address or NAS-Identifier MUST be present in a
- RADIUS Accounting-Request. It SHOULD contain a NAS-Port or NAS-
- Port-Type attribute or both unless the service does not involve a
- port or the NAS does not distinguish among its ports.
-
- If the Accounting-Request packet includes a Framed-IP-Address,
- that attribute MUST contain the IP address of the user. If the
- Access-Accept used the special values for Framed-IP-Address
- telling the NAS to assign or negotiate an IP address for the user,
- the Framed-IP-Address (if any) in the Accounting-Request MUST
- contain the actual IP address assigned or negotiated.
-
- A summary of the Accounting-Request packet format is shown below.
-
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Request Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
-
-
-Rigney Informational [Page 8]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- Code
-
- 4 for Accounting-Request.
-
- Identifier
-
- The Identifier field MUST be changed whenever the content of the
- Attributes field changes, and whenever a valid reply has been
- received for a previous request. For retransmissions where the
- contents are identical, the Identifier MUST remain unchanged.
-
- Note that if Acct-Delay-Time is included in the attributes of an
- Accounting-Request then the Acct-Delay-Time value will be updated
- when the packet is retransmitted, changing the content of the
- Attributes field and requiring a new Identifier and Request
- Authenticator.
-
- Request Authenticator
-
- The Request Authenticator of an Accounting-Request contains a 16-octet
- MD5 hash value calculated according to the method described in
- "Request Authenticator" above.
-
- Attributes
-
- The Attributes field is variable in length, and contains a list of
- Attributes.
-
-4.2. Accounting-Response
-
- Description
-
- Accounting-Response packets are sent by the RADIUS accounting
- server to the client to acknowledge that the Accounting-Request
- has been received and recorded successfully. If the Accounting-
- Request was recorded successfully then the RADIUS accounting
- server MUST transmit a packet with the Code field set to 5
- (Accounting-Response). On reception of an Accounting-Response by
- the client, the Identifier field is matched with a pending
- Accounting-Request. The Response Authenticator field MUST contain
- the correct response for the pending Accounting-Request. Invalid
- packets are silently discarded.
-
- A RADIUS Accounting-Response is not required to have any
- attributes in it.
-
- A summary of the Accounting-Response packet format is shown below.
- The fields are transmitted from left to right.
-
-
-
-Rigney Informational [Page 9]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Response Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- 5 for Accounting-Response.
-
- Identifier
-
- The Identifier field is a copy of the Identifier field of the
- Accounting-Request which caused this Accounting-Response.
-
- Response Authenticator
-
- The Response Authenticator of an Accounting-Response contains a
- 16-octet MD5 hash value calculated according to the method
- described in "Response Authenticator" above.
-
- Attributes
-
- The Attributes field is variable in length, and contains a list of
- zero or more Attributes.
-
-5. Attributes
-
- RADIUS Attributes carry the specific authentication, authorization
- and accounting details for the request and response.
-
- Some attributes MAY be included more than once. The effect of this
- is attribute specific, and is specified in each attribute
- description.
-
- The end of the list of attributes is indicated by the Length of the
- RADIUS packet.
-
- A summary of the attribute format is shown below. The fields are
- transmitted from left to right.
-
-
-
-
-Rigney Informational [Page 10]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- The Type field is one octet. Up-to-date values of the RADIUS Type
- field are specified in the most recent "Assigned Numbers" RFC [6].
- Values 192-223 are reserved for experimental use, values 224-240
- are reserved for implementation-specific use, and values 241-255
- are reserved and should not be used. This specification concerns
- the following values:
-
- 1-39 (refer to RADIUS document [2])
- 40 Acct-Status-Type
- 41 Acct-Delay-Time
- 42 Acct-Input-Octets
- 43 Acct-Output-Octets
- 44 Acct-Session-Id
- 45 Acct-Authentic
- 46 Acct-Session-Time
- 47 Acct-Input-Packets
- 48 Acct-Output-Packets
- 49 Acct-Terminate-Cause
- 50 Acct-Multi-Session-Id
- 51 Acct-Link-Count
- 60+ (refer to RADIUS document [2])
-
- Length
-
- The Length field is one octet, and indicates the length of this
- attribute including the Type, Length and Value fields. If an
- attribute is received in an Accounting-Request with an invalid
- Length, the entire request MUST be silently discarded.
-
- Value
-
- The Value field is zero or more octets and contains information
- specific to the attribute. The format and length of the Value
- field is determined by the Type and Length fields.
-
- Note that none of the types in RADIUS terminate with a NUL (hex
- 00). In particular, types "text" and "string" in RADIUS do not
- terminate with a NUL (hex 00). The Attribute has a length field
- and does not use a terminator. Text contains UTF-8 encoded 10646
-
-
-
-Rigney Informational [Page 11]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- [7] characters and String contains 8-bit binary data. Servers and
- servers and clients MUST be able to deal with embedded nulls.
- RADIUS implementers using C are cautioned not to use strcpy() when
- handling strings.
-
- The format of the value field is one of five data types. Note
- that type "text" is a subset of type "string."
-
- text 1-253 octets containing UTF-8 encoded 10646 [7]
- characters. Text of length zero (0) MUST NOT be sent;
- omit the entire attribute instead.
-
- string 1-253 octets containing binary data (values 0 through 255
- decimal, inclusive). Strings of length zero (0) MUST NOT
- be sent; omit the entire attribute instead.
-
- address 32 bit value, most significant octet first.
-
- integer 32 bit unsigned value, most significant octet first.
-
- time 32 bit unsigned value, most significant octet first --
- seconds since 00:00:00 UTC, January 1, 1970. The
- standard Attributes do not use this data type but it is
- presented here for possible use in future attributes.
-
-5.1. Acct-Status-Type
-
- Description
-
- This attribute indicates whether this Accounting-Request marks the
- beginning of the user service (Start) or the end (Stop).
-
- It MAY be used by the client to mark the start of accounting (for
- example, upon booting) by specifying Accounting-On and to mark the
- end of accounting (for example, just before a scheduled reboot) by
- specifying Accounting-Off.
-
- A summary of the Acct-Status-Type attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-Rigney Informational [Page 12]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- Type
-
- 40 for Acct-Status-Type.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 1 Start
- 2 Stop
- 3 Interim-Update
- 7 Accounting-On
- 8 Accounting-Off
- 9-14 Reserved for Tunnel Accounting
- 15 Reserved for Failed
-
-5.2. Acct-Delay-Time
-
- Description
-
- This attribute indicates how many seconds the client has been
- trying to send this record for, and can be subtracted from the
- time of arrival on the server to find the approximate time of the
- event generating this Accounting-Request. (Network transit time
- is ignored.)
-
- Note that changing the Acct-Delay-Time causes the Identifier to
- change; see the discussion under Identifier above.
-
- A summary of the Acct-Delay-Time attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-
-Rigney Informational [Page 13]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- Type
-
- 41 for Acct-Delay-Time.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.3. Acct-Input-Octets
-
- Description
-
- This attribute indicates how many octets have been received from
- the port over the course of this service being provided, and can
- only be present in Accounting-Request records where the Acct-
- Status-Type is set to Stop.
-
- A summary of the Acct-Input-Octets attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 42 for Acct-Input-Octets.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-
-
-
-
-
-
-
-Rigney Informational [Page 14]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
-5.4. Acct-Output-Octets
-
- Description
-
- This attribute indicates how many octets have been sent to the
- port in the course of delivering this service, and can only be
- present in Accounting-Request records where the Acct-Status-Type
- is set to Stop.
-
- A summary of the Acct-Output-Octets attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 43 for Acct-Output-Octets.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.5. Acct-Session-Id
-
- Description
-
- This attribute is a unique Accounting ID to make it easy to match
- start and stop records in a log file. The start and stop records
- for a given session MUST have the same Acct-Session-Id. An
- Accounting-Request packet MUST have an Acct-Session-Id. An
- Access-Request packet MAY have an Acct-Session-Id; if it does,
- then the NAS MUST use the same Acct-Session-Id in the Accounting-
- Request packets for that session.
-
- The Acct-Session-Id SHOULD contain UTF-8 encoded 10646 [7]
- characters.
-
-
-
-
-
-Rigney Informational [Page 15]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- For example, one implementation uses a string with an 8-digit
- upper case hexadecimal number, the first two digits increment on
- each reboot (wrapping every 256 reboots) and the next 6 digits
- counting from 0 for the first person logging in after a reboot up
- to 2^24-1, about 16 million. Other encodings are possible.
-
- A summary of the Acct-Session-Id attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Text ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 44 for Acct-Session-Id.
-
- Length
-
- >= 3
-
- String
-
- The String field SHOULD be a string of UTF-8 encoded 10646 [7]
- characters.
-
-5.6. Acct-Authentic
-
- Description
-
- This attribute MAY be included in an Accounting-Request to
- indicate how the user was authenticated, whether by RADIUS, the
- NAS itself, or another remote authentication protocol. Users who
- are delivered service without being authenticated SHOULD NOT
- generate Accounting records.
-
- A summary of the Acct-Authentic attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-Rigney Informational [Page 16]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- Type
-
- 45 for Acct-Authentic.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 1 RADIUS
- 2 Local
- 3 Remote
-
-5.7. Acct-Session-Time
-
- Description
-
- This attribute indicates how many seconds the user has received
- service for, and can only be present in Accounting-Request records
- where the Acct-Status-Type is set to Stop.
-
- A summary of the Acct-Session-Time attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 46 for Acct-Session-Time.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-
-
-
-
-Rigney Informational [Page 17]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
-5.8. Acct-Input-Packets
-
- Description
-
- This attribute indicates how many packets have been received from
- the port over the course of this service being provided to a
- Framed User, and can only be present in Accounting-Request records
- where the Acct-Status-Type is set to Stop.
-
- A summary of the Acct-Input-packets attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 47 for Acct-Input-Packets.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.9. Acct-Output-Packets
-
- Description
-
- This attribute indicates how many packets have been sent to the
- port in the course of delivering this service to a Framed User,
- and can only be present in Accounting-Request records where the
- Acct-Status-Type is set to Stop.
-
- A summary of the Acct-Output-Packets attribute format is shown below.
- The fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-Rigney Informational [Page 18]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 48 for Acct-Output-Packets.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.10. Acct-Terminate-Cause
-
- Description
-
- This attribute indicates how the session was terminated, and can
- only be present in Accounting-Request records where the Acct-
- Status-Type is set to Stop.
-
- A summary of the Acct-Terminate-Cause attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 19]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- Type
-
- 49 for Acct-Terminate-Cause
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets, containing an integer specifying
- the cause of session termination, as follows:
-
- 1 User Request
- 2 Lost Carrier
- 3 Lost Service
- 4 Idle Timeout
- 5 Session Timeout
- 6 Admin Reset
- 7 Admin Reboot
- 8 Port Error
- 9 NAS Error
- 10 NAS Request
- 11 NAS Reboot
- 12 Port Unneeded
- 13 Port Preempted
- 14 Port Suspended
- 15 Service Unavailable
- 16 Callback
- 17 User Error
- 18 Host Request
-
- The termination causes are as follows:
-
- User Request User requested termination of service, for
- example with LCP Terminate or by logging out.
-
- Lost Carrier DCD was dropped on the port.
-
- Lost Service Service can no longer be provided; for
- example, user's connection to a host was
- interrupted.
-
- Idle Timeout Idle timer expired.
-
- Session Timeout Maximum session length timer expired.
-
- Admin Reset Administrator reset the port or session.
-
-
-
-Rigney Informational [Page 20]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- Admin Reboot Administrator is ending service on the NAS,
- for example prior to rebooting the NAS.
-
- Port Error NAS detected an error on the port which
- required ending the session.
-
- NAS Error NAS detected some error (other than on the
- port) which required ending the session.
-
- NAS Request NAS ended session for a non-error reason not
- otherwise listed here.
-
- NAS Reboot The NAS ended the session in order to reboot
- non-administratively ("crash").
-
- Port Unneeded NAS ended session because resource usage fell
- below low-water mark (for example, if a
- bandwidth-on-demand algorithm decided that
- the port was no longer needed).
-
- Port Preempted NAS ended session in order to allocate the
- port to a higher priority use.
-
- Port Suspended NAS ended session to suspend a virtual
- session.
-
- Service Unavailable NAS was unable to provide requested service.
-
- Callback NAS is terminating current session in order
- to perform callback for a new session.
-
- User Error Input from user is in error, causing
- termination of session.
-
- Host Request Login Host terminated session normally.
-
-5.11. Acct-Multi-Session-Id
-
- Description
-
- This attribute is a unique Accounting ID to make it easy to link
- together multiple related sessions in a log file. Each session
- linked together would have a unique Acct-Session-Id but the same
- Acct-Multi-Session-Id. It is strongly recommended that the Acct-
- Multi-Session-Id contain UTF-8 encoded 10646 [7] characters.
-
- A summary of the Acct-Session-Id attribute format is shown below.
- The fields are transmitted from left to right.
-
-
-
-Rigney Informational [Page 21]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 50 for Acct-Multi-Session-Id.
-
- Length
-
- >= 3
-
- String
-
- The String field SHOULD contain UTF-8 encoded 10646 [7] characters.
-
-5.12. Acct-Link-Count
-
- Description
-
- This attribute gives the count of links which are known to have been
- in a given multilink session at the time the accounting record is
- generated. The NAS MAY include the Acct-Link-Count attribute in any
- Accounting-Request which might have multiple links.
-
- A summary of the Acct-Link-Count attribute format is show below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 22]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- Type
-
- 51 for Acct-Link-Count.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets, and contains the number of links
- seen so far in this Multilink Session.
-
- It may be used to make it easier for an accounting server to know
- when it has all the records for a given Multilink session. When
- the number of Accounting-Requests received with Acct-Status-Type =
- Stop and the same Acct-Multi-Session-Id and unique Acct-Session-
- Id's equals the largest value of Acct-Link-Count seen in those
- Accounting-Requests, all Stop Accounting-Requests for that
- Multilink Session have been received.
-
- An example showing 8 Accounting-Requests should make things
- clearer. For clarity only the relevant attributes are shown, but
- additional attributes containing accounting information will also
- be present in the Accounting-Request.
-
- Multi-Session-Id Session-Id Status-Type Link-Count
- "10" "10" Start 1
- "10" "11" Start 2
- "10" "11" Stop 2
- "10" "12" Start 3
- "10" "13" Start 4
- "10" "12" Stop 4
- "10" "13" Stop 4
- "10" "10" Stop 4
-
-5.13. Table of Attributes
-
- The following table provides a guide to which attributes may be found
- in Accounting-Request packets. No attributes should be found in
- Accounting-Response packets except Proxy-State and possibly Vendor-
- Specific.
-
-
- # Attribute
- 0-1 User-Name
- 0 User-Password
- 0 CHAP-Password
-
-
-
-Rigney Informational [Page 23]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- 0-1 NAS-IP-Address [Note 1]
- 0-1 NAS-Port
- 0-1 Service-Type
- 0-1 Framed-Protocol
- 0-1 Framed-IP-Address
- 0-1 Framed-IP-Netmask
- 0-1 Framed-Routing
- 0+ Filter-Id
- 0-1 Framed-MTU
- 0+ Framed-Compression
- 0+ Login-IP-Host
- 0-1 Login-Service
- 0-1 Login-TCP-Port
- 0 Reply-Message
- 0-1 Callback-Number
- 0-1 Callback-Id
- 0+ Framed-Route
- 0-1 Framed-IPX-Network
- 0 State
- 0+ Class
- 0+ Vendor-Specific
- 0-1 Session-Timeout
- 0-1 Idle-Timeout
- 0-1 Termination-Action
- 0-1 Called-Station-Id
- 0-1 Calling-Station-Id
- 0-1 NAS-Identifier [Note 1]
- 0+ Proxy-State
- 0-1 Login-LAT-Service
- 0-1 Login-LAT-Node
- 0-1 Login-LAT-Group
- 0-1 Framed-AppleTalk-Link
- 0-1 Framed-AppleTalk-Network
- 0-1 Framed-AppleTalk-Zone
- 1 Acct-Status-Type
- 0-1 Acct-Delay-Time
- 0-1 Acct-Input-Octets
- 0-1 Acct-Output-Octets
- 1 Acct-Session-Id
- 0-1 Acct-Authentic
- 0-1 Acct-Session-Time
- 0-1 Acct-Input-Packets
- 0-1 Acct-Output-Packets
- 0-1 Acct-Terminate-Cause
- 0+ Acct-Multi-Session-Id
- 0+ Acct-Link-Count
- 0 CHAP-Challenge
-
-
-
-
-Rigney Informational [Page 24]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
- 0-1 NAS-Port-Type
- 0-1 Port-Limit
- 0-1 Login-LAT-Port
-
- [Note 1] An Accounting-Request MUST contain either a NAS-IP-Address
- or a NAS-Identifier (or both).
-
- The following table defines the above table entries.
-
- 0 This attribute MUST NOT be present
- 0+ Zero or more instances of this attribute MAY be present.
- 0-1 Zero or one instance of this attribute MAY be present.
- 1 Exactly one instance of this attribute MUST be present.
-
-6. IANA Considerations
-
- The Packet Type Codes, Attribute Types, and Attribute Values defined
- in this document are registered by the Internet Assigned Numbers
- Authority (IANA) from the RADIUS name spaces as described in the
- "IANA Considerations" section of RFC 2865 [2], in accordance with BCP
- 26 [8].
-
-7. Security Considerations
-
- Security issues are discussed in sections concerning the
- authenticator included in accounting requests and responses, using a
- shared secret which is never sent over the network.
-
-8. Change Log
-
- US-ASCII replaced by UTF-8.
-
- Added notes on Proxy.
-
- Framed-IP-Address should contain the actual IP address of the user.
-
- If Acct-Session-ID was sent in an access-request, it must be used in
- the accounting-request for that session.
-
- New values added to Acct-Status-Type.
-
- Added an IANA Considerations section.
-
- Updated references.
-
- Text strings identified as a subset of string, to clarify use of
- UTF-8.
-
-
-
-
-Rigney Informational [Page 25]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
-9. References
-
- [1] Rigney, C., "RADIUS Accounting", RFC 2139, April 1997.
-
- [2] Rigney, C., Willens, S., Rubens, A. and W. Simpson, "Remote
- Authentication Dial In User Service (RADIUS)", RFC 2865, June
- 2000.
-
- [3] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March, 1997.
-
- [4] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August
- 1980.
-
- [5] Rivest, R. and S. Dusse, "The MD5 Message-Digest Algorithm", RFC
- 1321, April 1992.
-
- [6] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
- October 1994.
-
- [7] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC
- 2279, January 1998.
-
- [8] Alvestrand, H. and T. Narten, "Guidelines for Writing an IANA
- Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.
-
-10. Acknowledgements
-
- RADIUS and RADIUS Accounting were originally developed by Steve
- Willens of Livingston Enterprises for their PortMaster series of
- Network Access Servers.
-
-11. Chair's Address
-
- The RADIUS working group can be contacted via the current chair:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- Phone: +1 925 737 2100
- EMail: cdr@telemancy.com
-
-
-
-
-
-
-
-
-Rigney Informational [Page 26]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
-12. Author's Address
-
- Questions about this memo can also be directed to:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- EMail: cdr@telemancy.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 27]
-
-RFC 2866 RADIUS Accounting June 2000
-
-
-13. Full Copyright Statement
-
- Copyright (C) The Internet Society (2000). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney Informational [Page 28]
-
diff --git a/doc/rfc2869.txt b/doc/rfc2869.txt
deleted file mode 100644
index 74ed7f6..0000000
--- a/doc/rfc2869.txt
+++ /dev/null
@@ -1,2635 +0,0 @@
-
-
-
-
-
-
-Network Working Group C. Rigney
-Request for Comments: 2869 Livingston
-Category: Informational W. Willats
- Cyno Technologies
- P. Calhoun
- Sun Microsystems
- June 2000
-
-
- RADIUS Extensions
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2000). All Rights Reserved.
-
-Abstract
-
- This document describes additional attributes for carrying
- authentication, authorization and accounting information between a
- Network Access Server (NAS) and a shared Accounting Server using the
- Remote Authentication Dial In User Service (RADIUS) protocol
- described in RFC 2865 [1] and RFC 2866 [2].
-
-Table of Contents
-
- 1. Introduction .......................................... 2
- 1.1 Specification of Requirements ................... 3
- 1.2 Terminology ..................................... 3
- 2. Operation ............................................. 4
- 2.1 RADIUS support for Interim Accounting Updates.... 4
- 2.2 RADIUS support for Apple Remote Access
- Protocol ........................................ 5
- 2.3 RADIUS Support for Extensible Authentication
- Protocol (EAP) .................................. 11
- 2.3.1 Protocol Overview ............................... 11
- 2.3.2 Retransmission .................................. 13
- 2.3.3 Fragmentation ................................... 14
- 2.3.4 Examples ........................................ 14
- 2.3.5 Alternative uses ................................ 19
- 3. Packet Format ......................................... 19
- 4. Packet Types .......................................... 19
- 5. Attributes ............................................ 20
-
-
-
-Rigney, et al. Informational [Page 1]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- 5.1 Acct-Input-Gigawords ............................ 22
- 5.2 Acct-Output-Gigawords ........................... 23
- 5.3 Event-Timestamp ................................. 23
- 5.4 ARAP-Password ................................... 24
- 5.5 ARAP-Features ................................... 25
- 5.6 ARAP-Zone-Access ................................ 26
- 5.7 ARAP-Security ................................... 27
- 5.8 ARAP-Security-Data .............................. 28
- 5.9 Password-Retry .................................. 28
- 5.10 Prompt .......................................... 29
- 5.11 Connect-Info .................................... 30
- 5.12 Configuration-Token ............................. 31
- 5.13 EAP-Message ..................................... 32
- 5.14 Message-Authenticator ........................... 33
- 5.15 ARAP-Challenge-Response ......................... 35
- 5.16 Acct-Interim-Interval ........................... 36
- 5.17 NAS-Port-Id ..................................... 37
- 5.18 Framed-Pool ..................................... 37
- 5.19 Table of Attributes ............................. 38
- 6. IANA Considerations ................................... 39
- 7. Security Considerations ............................... 39
- 7.1 Message-Authenticator Security .................. 39
- 7.2 EAP Security .................................... 39
- 7.2.1 Separation of EAP server and PPP authenticator .. 40
- 7.2.2 Connection hijacking ............................ 41
- 7.2.3 Man in the middle attacks ....................... 41
- 7.2.4 Multiple databases .............................. 41
- 7.2.5 Negotiation attacks ............................. 42
- 8. References ............................................ 43
- 9. Acknowledgements ...................................... 44
- 10. Chair's Address ....................................... 44
- 11. Authors' Addresses .................................... 45
- 12. Full Copyright Statement .............................. 47
-
-1. Introduction
-
- RFC 2865 [1] describes the RADIUS Protocol as it is implemented and
- deployed today, and RFC 2866 [2] describes how Accounting can be
- performed with RADIUS.
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 2]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- This memo suggests several additional Attributes that can be added to
- RADIUS to perform various useful functions. These Attributes do not
- have extensive field experience yet and should therefore be
- considered experimental.
-
- The Extensible Authentication Protocol (EAP) [3] is a PPP extension
- that provides support for additional authentication methods within
- PPP. This memo describes how the EAP-Message and Message-
- Authenticator attributes may be used for providing EAP support within
- RADIUS.
-
- All attributes are comprised of variable length Type-Length-Value 3-
- tuples. New attribute values can be added without disturbing
- existing implementations of the protocol.
-
-1.1. Specification of Requirements
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119 [4].
-
- An implementation is not compliant if it fails to satisfy one or more
- of the must or must not requirements for the protocols it implements.
- An implementation that satisfies all the must, must not, should and
- should not requirements for its protocols is said to be
- "unconditionally compliant"; one that satisfies all the must and must
- not requirements but not all the should or should not requirements
- for its protocols is said to be "conditionally compliant."
-
- A NAS that does not implement a given service MUST NOT implement the
- RADIUS attributes for that service. For example, a NAS that is
- unable to offer ARAP service MUST NOT implement the RADIUS attributes
- for ARAP. A NAS MUST treat a RADIUS access-request requesting an
- unavailable service as an access-reject instead.
-
-1.2. Terminology
-
- This document uses the following terms:
-
- service The NAS provides a service to the dial-in user, such as PPP
- or Telnet.
-
- session Each service provided by the NAS to a dial-in user
- constitutes a session, with the beginning of the session
- defined as the point where service is first provided and
- the end of the session defined as the point where service
-
-
-
-
-
-Rigney, et al. Informational [Page 3]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- is ended. A user may have multiple sessions in parallel or
- series if the NAS supports that, with each session
- generating a separate start and stop accounting record.
-
- silently discard
- This means the implementation discards the packet without
- further processing. The implementation SHOULD provide the
- capability of logging the error, including the contents of
- the silently discarded packet, and SHOULD record the event
- in a statistics counter.
-
-2. Operation
-
- Operation is identical to that defined in RFC 2865 [1] and RFC 2866
- [2].
-
-2.1. RADIUS support for Interim Accounting Updates
-
- When a user is authenticated, a RADIUS server issues an Access-Accept
- in response to a successful Access-Request. If the server wishes to
- receive interim accounting messages for the given user it must
- include the Acct-Interim-Interval RADIUS attribute in the message,
- which indicates the interval in seconds between interim messages.
-
- It is also possible to statically configure an interim value on the
- NAS itself. Note that a locally configured value on the NAS MUST
- override the value found in an Access-Accept.
-
- This scheme does not break backward interoperability since a RADIUS
- server not supporting this extension will simply not add the new
- Attribute. NASes not supporting this extension will ignore the
- Attribute.
-
- Note that all information in an interim message is cumulative (i.e.
- number of packets sent is the total since the beginning of the
- session, not since the last interim message).
-
- It is envisioned that an Interim Accounting record (with Acct-
- Status-Type = Interim-Update (3)) would contain all of the attributes
- normally found in an Accounting Stop message with the exception of
- the Acct-Term-Cause attribute.
-
- Since all the information is cumulative, a NAS MUST ensure that only
- a single generation of an interim Accounting message for a given
- session is present in the retransmission queue at any given time.
-
-
-
-
-
-
-Rigney, et al. Informational [Page 4]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- A NAS MAY use a fudge factor to add a random delay between Interim
- Accounting messages for separate sessions. This will ensure that a
- cycle where all messages are sent at once is prevented, such as might
- otherwise occur if a primary link was recently restored and many
- dial-up users were directed to the same NAS at once.
-
- The Network and NAS CPU load of using Interim Updates should be
- carefully considered, and appropriate values of Acct-Interim-Interval
- chosen.
-
-2.2. RADIUS support for Apple Remote Access Protocol
-
- The RADIUS (Remote Authentication Dial-In User Service) protocol
- provides a method that allows multiple dial-in Network Access Server
- (NAS) devices to share a common authentication database.
-
- The Apple Remote Access Protocol (ARAP) provides a method for sending
- AppleTalk network traffic over point-to-point links, typically, but
- not exclusively, asynchronous and ISDN switched-circuit connections.
- Though Apple is moving toward ATCP on PPP for future remote access
- services, ARAP is still a common way for the installed base of
- Macintosh users to make remote network connections, and is likely to
- remain so for some time.
-
- ARAP is supported by several NAS vendors who also support PPP, IPX
- and other protocols in the same NAS. ARAP connections in these
- multi-protocol devices are often not authenticated with RADIUS, or if
- they are, each vendor creates an individual solution to the problem.
-
- This section describes the use of additional RADIUS attributes to
- support ARAP. RADIUS client and server implementations that implement
- this specification should be able to authenticate ARAP connections in
- an interoperable manner.
-
- This section assumes prior knowledge of RADIUS, and will go into some
- detail on the operation of ARAP before entering a detailed discussion
- of the proposed ARAP RADIUS attributes.
-
- There are two features of ARAP this document does not address:
-
- 1. User initiated password changing. This is not part of RADIUS,
- but can be implemented through a software process other than
- RADIUS.
-
- 2. Out-of-Band messages. At any time, the NAS can send messages to
- an ARA client which appear in a dialog box on the dial-in
- user's screen. These are not part of authentication and do not
- belong here. However, we note that a Reply-Message attribute in
-
-
-
-Rigney, et al. Informational [Page 5]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- an Access-Accept may be sent down to the user as a sign-on
- message of the day string using the out-of-band channel.
-
- We have tried to respect the spirit of the existing RADIUS protocol
- as much as possible, making design decisions compatible with prior
- art. Further, we have tried to strike a balance between flooding the
- RADIUS world with new attributes, and hiding all of ARAP operation
- within a single multiplexed ARAP attribute string or within Extended
- Authentication Protocol (EAP) [3] machinery.
-
- However, we feel ARAP is enough of a departure from PPP to warrant a
- small set of similarly named attributes of its own.
-
- We have assumed that an ARAP-aware RADIUS server will be able to do
- DES encryption and generate security module challenges. This is in
- keeping with the general RADIUS goal of smart server / simple NAS.
-
- ARAP authenticates a connection in two phases. The first is a "Two-
- Way DES" random number exchange, using the user's password as a key.
- We say "Two-Way" because the ARAP NAS challenges the dial-in client
- to authenticate itself, and the dial-in client challenges the ARAP
- NAS to authenticate itself.
-
- Specifically, ARAP does the following:
-
- 1. The NAS sends two 32-bit random numbers to the dial-in client
- in an ARAP msg_auth_challenge packet.
-
- 2. The dial-in client uses the user's password to DES encrypt the
- two random numbers sent to it by the NAS. The dial-in client
- then sends this result, the user's name and two 32-bit random
- numbers of its own back to the NAS in an ARAP msg_auth_request
- packet.
-
- 3. The NAS verifies the encrypted random numbers sent by the
- dial-in client are what it expected. If so, it encrypts the
- dial-in client's challenge using the password and sends it back
- to the dial-in client in an ARAP msg_auth_response packet.
-
- Note that if the dial-in client's response was wrong, meaning the
- user has the wrong password, the server can initiate a retry sequence
- up to the maximum amount of retries allowed by the NAS. In this case,
- when the dial-in client receives the ARAP msg_auth_response packet it
- will acknowledge it with an ARAP msg_auth_again packet.
-
- After this first "DES Phase" the ARAP NAS MAY initiate a secondary
- authentication phase using what Apple calls "Add-In Security
- Modules." Security Modules are small pieces of code which run on
-
-
-
-Rigney, et al. Informational [Page 6]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- both the client and server and are allowed to read and write
- arbitrary data across the communications link to perform additional
- authentication functions. Various security token vendors use this
- mechanism to authenticate ARA callers.
-
- Although ARAP allows security modules to read and write anything they
- like, all existing security modules use simple challenge and response
- cycles, with perhaps some overall control information. This document
- assumes all existing security modules can be supported with one or
- more challenge/response cycles.
-
- To complicate RADIUS and ARAP integration, ARAP sends down some
- profile information after the DES Phase and before the Security
- Module phase. This means that besides the responses to challenges,
- this profile information must also be present, at somewhat unusual
- times. Fortunately the information is only a few pieces of numeric
- data related to passwords, which this document packs into a single
- new attribute.
-
- Presenting an Access-Request to RADIUS on behalf of an ARAP
- connection is straightforward. The ARAP NAS generates the random
- number challenge, and then receives the dial-in client's response,
- the dial-in client's challenge, and the user's name. Assuming the
- user is not a guest, the following information is forwarded in an
- Access-Request packet: User-Name (up to 31 characters long),
- Framed-Protocol (set to 3, ARAP), ARAP-Password, and any additional
- attributes desired, such as Service-Type, NAS-IP-Address, NAS-Id,
- NAS-Port-Type, NAS-Port, NAS-Port-Id, Connect-Info, etc.
-
- The Request Authenticator is a NAS-generated 16 octet random number.
- The low-order 8 octets of this number are sent to the dial-in user as
- the two 4 octet random numbers required in the ARAP
- msg_auth_challenge packet. Octets 0-3 are the first random number and
- Octets 4-7 are the second random number.
-
- The ARAP-Password in the Access-Request contains a 16 octet random
- number field, and is used to carry the dial-in user's response to the
- NAS challenge and the client's own challenge to the NAS. The high-
- order octets contain the dial-in user's challenge to the NAS (2 32-
- bit numbers, 8 octets) and the low-order octets contain the dial-in
- user's response to the NAS challenge (2 32-bit numbers, 8 octets).
-
- Only one of User-Password, CHAP-Password, or ARAP-Password needs to
- be present in an Access-Request, or one or more EAP-Messages.
-
- If the RADIUS server does not support ARAP it SHOULD return an
- Access-Reject to the NAS.
-
-
-
-
-Rigney, et al. Informational [Page 7]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- If the RADIUS server does support ARAP, it should verify the user's
- response using the Challenge (from the lower order 8 octets of the
- Request Authenticator) and the user's response (from the low order 8
- octets of the ARAP-Password).
-
- If that authentication fails, the RADIUS server should return an
- Access-Reject packet to the NAS, with optional Password-Retry and
- Reply-Messages attributes. The presence of Password-Retry indicates
- the ARAP NAS MAY choose to initiate another challenge-response cycle,
- up to a total number of times equal to the integer value of the
- Password-Retry attribute.
-
- If the user is authenticated, the RADIUS server should return an
- Access-Accept packet (Code 2) to the NAS, with ID and Response
- Authenticator as usual, and attributes as follows:
-
- Service-Type of Framed-Protocol.
-
- Framed-Protocol of ARAP (3).
-
- Session-Timeout with the maximum connect time for the user in
- seconds. If the user is to be given unlimited time,
- Session-Timeout should not be included in the Access-Accept
- packet, and ARAP will treat that as an unlimited timeout (-1).
-
- ARAP-Challenge-Response, containing 8 octets with the response to
- the dial-in client's challenge. The RADIUS server calculates this
- value by taking the dial-in client's challenge from the high order
- 8 octets of the ARAP-Password attribute and performing DES
- encryption on this value with the authenticating user's password
- as the key. If the user's password is less than 8 octets in
- length, the password is padded at the end with NULL octets to a
- length of 8 before using it as a key. If the user's password is
- greater than 8 octets in length, an Access-Reject MUST be sent
- instead.
-
- ARAP-Features, containing information that the NAS should send to
- the user in an ARAP "feature flags" packet.
-
- Octet 0: If zero, user cannot change their password. If non-
- zero user can. (RADIUS does not handle the password changing,
- just the attribute which indicates whether ARAP indicates they
- can.)
-
- Octet 1: Minimum acceptable password length (0-8).
-
-
-
-
-
-
-Rigney, et al. Informational [Page 8]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Octet 2-5: Password creation date in Macintosh format, defined
- as 32 bits unsigned representing seconds since Midnight GMT
- January 1, 1904.
-
- Octet 6-9 Password Expiration Delta from create date in
- seconds.
-
- Octet 10-13: Current RADIUS time in Macintosh format
-
- Optionally, a single Reply-Message with a text string up to 253
- characters long which MAY be sent down to the user to be displayed
- in a sign-on/message of the day dialog.
-
- Framed-AppleTalk-Network may be included.
-
- Framed-AppleTalk-Zone, up to 32 characters in length, may be
- included.
-
- ARAP defines the notion of a list of zones for a user. Along with
- a list of zone names, a Zone Access Flag is defined (and used by
- the NAS) which says how to use the list of zone names. That is,
- the dial-in user may only be allowed to see the Default Zone, or
- only the zones in the zone list (inclusive) or any zone except
- those in the zone list (exclusive).
-
- The ARAP NAS handles this by having a named filter which contains
- (at least) zone names. This solves the problem where a single
- RADIUS server is managing disparate NAS clients who may not be
- able to "see" all of the zone names in a user zone list. Zone
- names only have meaning "at the NAS." The disadvantage of this
- approach is that zone filters must be set up on the NAS somehow,
- then referenced by the RADIUS Filter-Id.
-
- ARAP-Zone-Access contains an integer which specifies how the "zone
- list" for this user should be used. If this attribute is present
- and the value is 2 or 4 then a Filter-Id must also be present to
- name a zone list filter to apply the access flag to.
-
- The inclusion of a Callback-Number or Callback-Id attribute in the
- Access-Accept MAY cause the ARAP NAS to disconnect after sending
- the Feature Flags to begin callback processing in an ARAP specific
- way.
-
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 9]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Other attributes may be present in the Access-Accept packet as well.
-
- An ARAP NAS will need other information to finish bringing up the
- connection to the dial in client, but this information can be
- provided by the ARAP NAS without any help from RADIUS, either through
- configuration by SNMP, a NAS administration program, or deduced by
- the AppleTalk stack in the NAS. Specifically:
-
- 1. AppearAsNet and AppearAsNode values, sent to the client to tell
- it what network and node numbers it should use in its datagram
- packets. AppearAsNet can be taken from the Framed-AppleTalk-
- Network attribute or from the configuration or AppleTalk stack
- onthe NAS.
-
- 2. The "default" zone - that is the name of the AppleTalk zone in
- which the dial-in client will appear. (Or can be specified
- with the Framed-AppleTalk-Zone attribute.)
-
- 3. Other very NAS specific stuff such as the name of the NAS, and
- smartbuffering information. (Smartbuffering is an ARAP
- mechanism for replacing common AppleTalk datagrams with small
- tokens, to improve slow link performance in a few common
- traffic situations.)
-
- 4. "Zone List" information for this user. The ARAP specification
- defines a "zone count" field which is actually unused.
-
- RADIUS supports ARAP Security Modules in the following manner.
-
- After DES authentication has been completed, the RADIUS server may
- instruct the ARAP NAS to run one or more security modules for the
- dial-in user. Although the underlying protocol supports executing
- multiple security modules in series, in practice all current
- implementations only allow executing one. Through the use of
- multiple Access-Challenge requests, multiple modules can be
- supported, but this facility will probably never be used.
-
- We also assume that, even though ARAP allows a free-form dialog
- between security modules on each end of the point-to-point link, in
- actual practice all security modules can be reduced to a simple
- challenge/response cycle.
-
- If the RADIUS server wishes to instruct the ARAP NAS to run a
- security module, it should send an Access-Challenge packet to the NAS
- with (optionally) the State attribute, plus the ARAP-Challenge-
- Response, ARAP-Features, and two more attributes:
-
-
-
-
-
-Rigney, et al. Informational [Page 10]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- ARAP-Security: a four octet security module signature, containing a
- Macintosh OSType.
-
- ARAP-Security-Data, a string to carry the actual security module
- challenge and response.
-
- When the security module finishes executing, the security module
- response is passed in an ARAP-Security-Data attribute from the NAS
- to the RADIUS server in a second Access-Request, also including the
- State from the Access-Challenge. The authenticator field contains no
- special information in this case, and this can be discerned by the
- presence of the State attribute.
-
-2.3. RADIUS Support for Extensible Authentication Protocol (EAP)
-
- The Extensible Authentication Protocol (EAP), described in [3],
- provides a standard mechanism for support of additional
- authentication methods within PPP. Through the use of EAP, support
- for a number of authentication schemes may be added, including smart
- cards, Kerberos, Public Key, One Time Passwords, and others. In
- order to provide for support of EAP within RADIUS, two new
- attributes, EAP-Message and Message-Authenticator, are introduced in
- this document. This section describes how these new attributes may be
- used for providing EAP support within RADIUS.
-
- In the proposed scheme, the RADIUS server is used to shuttle RADIUS-
- encapsulated EAP Packets between the NAS and a backend security
- server. While the conversation between the RADIUS server and the
- backend security server will typically occur using a proprietary
- protocol developed by the backend security server vendor, it is also
- possible to use RADIUS-encapsulated EAP via the EAP-Message
- attribute. This has the advantage of allowing the RADIUS server to
- support EAP without the need for authentication-specific code, which
- can instead reside on the backend security server.
-
-2.3.1. Protocol Overview
-
- The EAP conversation between the authenticating peer (dial-in user)
- and the NAS begins with the negotiation of EAP within LCP. Once EAP
- has been negotiated, the NAS MUST send an EAP-Request/Identity
- message to the authenticating peer, unless identity is determined via
- some other means such as Called-Station-Id or Calling-Station-Id.
- The peer will then respond with an EAP-Response/Identity which the
- the NAS will then forward to the RADIUS server in the EAP-Message
- attribute of a RADIUS Access-Request packet. The RADIUS Server will
- typically use the EAP-Response/Identity to determine which EAP type
- is to be applied to the user.
-
-
-
-
-Rigney, et al. Informational [Page 11]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- In order to permit non-EAP aware RADIUS proxies to forward the
- Access-Request packet, if the NAS sends the EAP-Request/Identity, the
- NAS MUST copy the contents of the EAP-Response/Identity into the
- User-Name attribute and MUST include the EAP-Response/Identity in the
- User-Name attribute in every subsequent Access-Request. NAS-Port or
- NAS-Port-Id SHOULD be included in the attributes issued by the NAS in
- the Access-Request packet, and either NAS-Identifier or NAS-IP-
- Address MUST be included. In order to permit forwarding of the
- Access-Reply by EAP-unaware proxies, if a User-Name attribute was
- included in an Access-Request, the RADIUS Server MUST include the
- User-Name attribute in subsequent Access-Accept packets. Without the
- User-Name attribute, accounting and billing becomes very difficult to
- manage.
-
- If identity is determined via another means such as Called-Station-Id
- or Calling-Station-Id, the NAS MUST include these identifying
- attributes in every Access-Request.
-
- While this approach will save a round-trip, it cannot be universally
- employed. There are circumstances in which the user's identity may
- not be needed (such as when authentication and accounting is handled
- based on Called-Station-Id or Calling-Station-Id), and therefore an
- EAP-Request/Identity packet may not necessarily be issued by the NAS
- to the authenticating peer. In cases where an EAP-Request/Identity
- packet will not be sent, the NAS will send to the RADIUS server a
- RADIUS Access-Request packet containing an EAP-Message attribute
- signifying EAP-Start. EAP-Start is indicated by sending an EAP-
- Message attribute with a length of 2 (no data). However, it should be
- noted that since no User-Name attribute is included in the Access-
- Request, this approach is not compatible with RADIUS as specified in
- [1], nor can it easily be applied in situations where proxies are
- deployed, such as roaming or shared use networks.
-
- If the RADIUS server supports EAP, it MUST respond with an Access-
- Challenge packet containing an EAP-Message attribute. If the RADIUS
- server does not support EAP, it MUST respond with an Access-Reject.
- The EAP-Message attribute includes an encapsulated EAP packet which
- is then passed on to the authenticating peer. In the case where the
- NAS does not initially send an EAP-Request/Identity message to the
- peer, the Access-Challenge typically will contain an EAP-Message
- attribute encapsulating an EAP-Request/Identity message, requesting
- the dial-in user to identify themself. The NAS will then respond with
- a RADIUS Access-Request packet containing an EAP-Message attribute
- encapsulating an EAP-Response. The conversation continues until
- either a RADIUS Access-Reject or Access-Accept packet is received.
-
-
-
-
-
-
-Rigney, et al. Informational [Page 12]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Reception of a RADIUS Access-Reject packet, with or without an EAP-
- Message attribute encapsulating EAP-Failure, MUST result in the NAS
- issuing an LCP Terminate Request to the authenticating peer. A
- RADIUS Access-Accept packet with an EAP-Message attribute
- encapsulating EAP-Success successfully ends the authentication phase.
- The RADIUS Access-Accept/EAP-Message/EAP-Success packet MUST contain
- all of the expected attributes which are currently returned in an
- Access-Accept packet.
-
- The above scenario creates a situation in which the NAS never needs
- to manipulate an EAP packet. An alternative may be used in
- situations where an EAP-Request/Identity message will always be sent
- by the NAS to the authenticating peer.
-
- For proxied RADIUS requests there are two methods of processing. If
- the domain is determined based on the Called-Station-Id, the RADIUS
- Server may proxy the initial RADIUS Access-Request/EAP-Start. If the
- domain is determined based on the user's identity, the local RADIUS
- Server MUST respond with a RADIUS Access-Challenge/EAP-Identity
- packet. The response from the authenticating peer MUST be proxied to
- the final authentication server.
-
- For proxied RADIUS requests, the NAS may receive an Access-Reject
- packet in response to its Access-Request/EAP-Identity packet. This
- would occur if the message was proxied to a RADIUS Server which does
- not support the EAP-Message extension. On receiving an Access-Reject,
- the NAS MUST send an LCP Terminate Request to the authenticating
- peer, and disconnect.
-
-2.3.2. Retransmission
-
- As noted in [3], the EAP authenticator (NAS) is responsible for
- retransmission of packets between the authenticating peer and the
- NAS. Thus if an EAP packet is lost in transit between the
- authenticating peer and the NAS (or vice versa), the NAS will
- retransmit. As in RADIUS [1], the RADIUS client is responsible for
- retransmission of packets between the RADIUS client and the RADIUS
- server.
-
- Note that it may be necessary to adjust retransmission strategies and
- authentication timeouts in certain cases. For example, when a token
- card is used additional time may be required to allow the user to
- find the card and enter the token. Since the NAS will typically not
- have knowledge of the required parameters, these need to be provided
- by the RADIUS server. This can be accomplished by inclusion of
- Session-Timeout and Password-Retry attributes within the Access-
- Challenge packet.
-
-
-
-
-Rigney, et al. Informational [Page 13]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- If Session-Timeout is present in an Access-Challenge packet that also
- contains an EAP-Message, the value of the Session-Timeout provides
- the NAS with the maximum number of seconds the NAS should wait for an
- EAP-Response before retransmitting the EAP-Message to the dial-in
- user.
-
-2.3.3. Fragmentation
-
- Using the EAP-Message attribute, it is possible for the RADIUS server
- to encapsulate an EAP packet that is larger than the MTU on the link
- between the NAS and the peer. Since it is not possible for the RADIUS
- server to use MTU discovery to ascertain the link MTU, the Framed-MTU
- attribute may be included in an Access-Request packet containing an
- EAP-Message attribute so as to provide the RADIUS server with this
- information.
-
-2.3.4. Examples
-
- The example below shows the conversation between the authenticating
- peer, NAS, and RADIUS server, for the case of a One Time Password
- (OTP) authentication. OTP is used only for illustrative purposes;
- other authentication protocols could also have been used, although
- they might show somewhat different behavior.
-
-Authenticating Peer NAS RADIUS Server
-------------------- --- -------------
-
- <- PPP LCP Request-EAP
- auth
-PPP LCP ACK-EAP
-auth ->
- <- PPP EAP-Request/
- Identity
-PPP EAP-Response/
-Identity (MyID) ->
- RADIUS
- Access-Request/
- EAP-Message/
- EAP-Response/
- (MyID) ->
- <- RADIUS
- Access-Challenge/
- EAP-Message/EAP-Request
- OTP/OTP Challenge
- <- PPP EAP-Request/
- OTP/OTP Challenge
-PPP EAP-Response/
-OTP, OTPpw ->
-
-
-
-Rigney, et al. Informational [Page 14]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- RADIUS
- Access-Request/
- EAP-Message/
- EAP-Response/
- OTP, OTPpw ->
- <- RADIUS
- Access-Accept/
- EAP-Message/EAP-Success
- (other attributes)
- <- PPP EAP-Success
-PPP Authentication
-Phase complete,
-NCP Phase starts
-
-In the case where the NAS first sends an EAP-Start packet to the
-RADIUS server, the conversation would appear as follows:
-
-Authenticating Peer NAS RADIUS Server
-------------------- --- -------------
-
- <- PPP LCP Request-EAP
- auth
-PPP LCP ACK-EAP
-auth ->
- RADIUS
- Access-Request/
- EAP-Message/Start ->
- <- RADIUS
- Access-Challenge/
- EAP-Message/Identity
- <- PPP EA-Request/
- Identity
-PPP EAP-Response/
-Identity (MyID) ->
- RADIUS
- Access-Request/
- EAP-Message/
- EAP-Response/
- (MyID) ->
- <- RADIUS
- Access-Challenge/
- EAP-Message/EAP-Request
- OTP/OTP Challenge
- <- PPP EAP-Request/
- OTP/OTP Challenge
-PPP EAP-Response/
-OTP, OTPpw ->
-
-
-
-
-Rigney, et al. Informational [Page 15]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- RADIUS
- Access-Request/
- EAP-Message/
- EAP-Response/
- OTP, OTPpw ->
- <- RADIUS
- Access-Accept/
- EAP-Message/EAP-Success
- (other attributes)
- <- PPP EAP-Success
-PPP Authentication
-Phase complete,
-NCP Phase starts
-
-In the case where the client fails EAP authentication, the
-conversation would appear as follows:
-
-Authenticating Peer NAS RADIUS Server
-------------------- --- -------------
-
- <- PPP LCP Request-EAP
- auth
-PPP LCP ACK-EAP
-auth ->
- Access-Request/
- EAP-Message/Start ->
- <- RADIUS
- Access-Challenge/
- EAP-Message/Identity
- <- PPP EAP-Request/
- Identity
-PPP EAP-Response/
-Identity (MyID) ->
- RADIUS
- Access-Request/
- EAP-Message/
- EAP-Response/
- (MyID) ->
- <- RADIUS
- Access-Challenge/
- EAP-Message/EAP-Request
- OTP/OTP Challenge
- <- PPP EAP-Request/
- OTP/OTP Challenge
-PPP EAP-Response/
-OTP, OTPpw ->
- RADIUS
- Access-Request/
-
-
-
-Rigney, et al. Informational [Page 16]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- EAP-Message/
- EAP-Response/
- OTP, OTPpw ->
- <- RADIUS
- Access-Reject/
- EAP-Message/EAP-Failure
-
- <- PPP EAP-Failure
- (client disconnected)
-
-In the case that the RADIUS server or proxy does not support
-EAP-Message, the conversation would appear as follows:
-
-Authenticating Peer NAS RADIUS Server
-------------------- --- -------------
-
- <- PPP LCP Request-EAP
- auth
-PPP LCP ACK-EAP
-auth ->
- RADIUS
- Access-Request/
- EAP-Message/Start ->
- <- RADIUS
- Access-Reject
- <- PPP LCP Terminate
- (User Disconnected)
-
-In the case where the local RADIUS Server does support EAP-Message,
-but the remote RADIUS Server does not, the conversation would appear
-as follows:
-
-Authenticating Peer NAS RADIUS Server
-------------------- --- -------------
-
- <- PPP LCP Request-EAP
- auth
-PPP LCP ACK-EAP
-auth ->
- RADIUS
- Access-Request/
- EAP-Message/Start ->
- <- RADIUS
- Access-Challenge/
- EAP-Message/Identity
- <- PPP EAP-Request/
- Identity
-
-
-
-
-Rigney, et al. Informational [Page 17]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-PPP EAP-Response/
-Identity
-(MyID) ->
- RADIUS
- Access-Request/
- EAP-Message/EAP-Response/
- (MyID) ->
- <- RADIUS
- Access-Reject
- (proxied from remote
- RADIUS Server)
- <- PPP LCP Terminate
- (User Disconnected)
-
-In the case where the authenticating peer does not support EAP, but
-where EAP is required for that user, the conversation would appear as
-follows:
-
-Authenticating Peer NAS RADIUS Server
-------------------- --- -------------
-
- <- PPP LCP Request-EAP
- auth
-PPP LCP NAK-EAP
-auth ->
- <- PPP LCP Request-CHAP
- auth
-PPP LCP ACK-CHAP
-auth ->
- <- PPP CHAP Challenge
-PPP CHAP Response ->
- RADIUS
- Access-Request/
- User-Name,
- CHAP-Password ->
- <- RADIUS
- Access-Reject
- <- PPP LCP Terminate
- (User Disconnected)
-
-In the case where the NAS does not support EAP, but where EAP is
-required for that user, the conversation would appear as follows:
-
-Authenticating Peer NAS RADIUS Server
-------------------- --- -------------
-
- <- PPP LCP Request-CHAP
- auth
-
-
-
-Rigney, et al. Informational [Page 18]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-PP LCP ACK-CHAP
-auth ->
- <- PPP CHAP Challenge
-PPP CHAP Response ->
- RADIUS
- Access-Request/
- User-Name,
- CHAP-Password ->
-
- <- RADIUS
- Access-Reject
- <- PPP LCP Terminate
- (User Disconnected)
-
-2.3.5. Alternative uses
-
- Currently the conversation between the backend security server and
- the RADIUS server is proprietary because of lack of standardization.
- In order to increase standardization and provide interoperability
- between Radius vendors and backend security vendors, it is
- recommended that RADIUS-encapsulated EAP be used for this
- conversation.
-
- This has the advantage of allowing the RADIUS server to support EAP
- without the need for authentication-specific code within the RADIUS
- server. Authentication-specific code can then reside on a backend
- security server instead.
-
- In the case where RADIUS-encapsulated EAP is used in a conversation
- between a RADIUS server and a backend security server, the security
- server will typically return an Access-Accept/EAP-Success message
- without inclusion of the expected attributes currently returned in an
- Access-Accept. This means that the RADIUS server MUST add these
- attributes prior to sending an Access-Accept/EAP-Success message to
- the NAS.
-
-3. Packet Format
-
- Packet Format is identical to that defined in RFC 2865 [1] and 2866
- [2].
-
-4. Packet Types
-
- Packet types are identical to those defined in RFC 2865 [1] and 2866
- [2].
-
- See "Table of Attributes" below to determine which types of packets
- can contain which attributes defined here.
-
-
-
-Rigney, et al. Informational [Page 19]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-5. Attributes
-
- RADIUS Attributes carry the specific authentication, authorization
- and accounting details for the request and response.
-
- Some attributes MAY be included more than once. The effect of this
- is attribute specific, and is specified in each attribute
- description. The order of attributes of the same type SHOULD be
- preserved. The order of attributes of different types is not
- required to be preserved.
-
- The end of the list of attributes is indicated by the Length of the
- RADIUS packet.
-
- A summary of the attribute format is the same as in RFC 2865 [1] but
- is included here for ease of reference. The fields are transmitted
- from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- The Type field is one octet. Up-to-date values of the RADIUS Type
- field are specified in the most recent "Assigned Numbers" RFC [5].
- Values 192-223 are reserved for experimental use, values 224-240
- are reserved for implementation-specific use, and values 241-255
- are reserved and should not be used. This specification concerns
- the following values:
-
- 1-39 (refer to RFC 2865 [1], "RADIUS")
- 40-51 (refer to RFC 2866 [2], "RADIUS Accounting")
- 52 Acct-Input-Gigawords
- 53 Acct-Output-Gigawords
- 54 Unused
- 55 Event-Timestamp
- 56-59 Unused
- 60-63 (refer to RFC 2865 [1], "RADIUS")
- 64-67 (refer to [6])
- 68 (refer to [7])
- 69 (refer to [6])
- 70 ARAP-Password
- 71 ARAP-Features
- 72 ARAP-Zone-Access
-
-
-
-Rigney, et al. Informational [Page 20]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- 73 ARAP-Security
- 74 ARAP-Security-Data
- 75 Password-Retry
- 76 Prompt
- 77 Connect-Info
- 78 Configuration-Token
- 79 EAP-Message
- 80 Message-Authenticator
- 81-83 (refer to [6])
- 84 ARAP-Challenge-Response
- 85 Acct-Interim-Interval
- 86 (refer to [7])
- 87 NAS-Port-Id
- 88 Framed-Pool
- 89 Unused
- 90-91 (refer to [6])
- 92-191 Unused
-
- Length
-
- The Length field is one octet, and indicates the length of this
- attribute including the Type, Length and Value fields. If an
- attribute is received in a packet with an invalid Length, the
- entire request should be silently discarded.
-
- Value
-
- The Value field is zero or more octets and contains information
- specific to the attribute. The format and length of the Value
- field is determined by the Type and Length fields.
-
- Note that none of the types in RADIUS terminate with a NUL (hex
- 00). In particular, types "text" and "string" in RADIUS do not
- terminate with a NUL (hex 00). The Attribute has a length field
- and does not use a terminator. Text contains UTF-8 encoded 10646
- [8] characters and String contains 8-bit binary data. Servers and
- servers and clients MUST be able to deal with embedded nulls.
- RADIUS implementers using C are cautioned not to use strcpy() when
- handling strings.
-
- The format of the value field is one of five data types. Note
- that type "text" is a subset of type "string."
-
- text 1-253 octets containing UTF-8 encoded 10646 [8]
- characters. Text of length zero (0) MUST NOT be sent;
- omit the entire attribute instead.
-
-
-
-
-
-Rigney, et al. Informational [Page 21]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- string 1-253 octets containing binary data (values 0 through
- 255 decimal, inclusive). Strings of length zero (0) MUST
- NOT be sent; omit the entire attribute instead.
-
- address 32 bit unsigned value, most significant octet first.
-
- integer 32 bit unsigned value, most significant octet first.
-
- time 32 bit unsigned value, most significant octet first --
- seconds since 00:00:00 UTC, January 1, 1970.
-
-5.1. Acct-Input-Gigawords
-
- Description
-
- This attribute indicates how many times the Acct-Input-Octets
- counter has wrapped around 2^32 over the course of this service
- being provided, and can only be present in Accounting-Request
- records where the Acct-Status-Type is set to Stop or Interim-
- Update.
-
- A summary of the Acct-Input-Gigawords attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 52 for Acct-Input-Gigawords.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 22]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-5.2. Acct-Output-Gigawords
-
- Description
-
- This attribute indicates how many times the Acct-Output-Octets
- counter has wrapped around 2^32 in the course of delivering this
- service, and can only be present in Accounting-Request records
- where the Acct-Status-Type is set to Stop or Interim-Update.
-
- A summary of the Acct-Output-Gigawords attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 53 for Acct-Output-Gigawords.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
-5.3. Event-Timestamp
-
- Description
-
- This attribute is included in an Accounting-Request packet to
- record the time that this event occurred on the NAS, in seconds
- since January 1, 1970 00:00 UTC.
-
- A summary of the Event-Timestamp attribute format is shown below.
- The fields are transmitted from left to right.
-
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 23]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 55 for Event-Timestamp
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets encoding an unsigned integer with
- the number of seconds since January 1, 1970 00:00 UTC.
-
-5.4. ARAP-Password
-
- Description
-
- This attribute is only present in an Access-Request packet
- containing a Framed-Protocol of ARAP.
-
- Only one of User-Password, CHAP-Password, or ARAP-Password needs
- to be present in an Access-Request, or one or more EAP-Messages.
-
- A summary of the ARAP-Password attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value2
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value4
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-Rigney, et al. Informational [Page 24]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Type
-
- 70 for ARAP-Password.
-
- Length
-
- 18
-
- Value
-
- This attribute contains a 16 octet string, used to carry the
- dial-in user's response to the NAS challenge and the client's own
- challenge to the NAS. The high-order octets (Value1 and Value2)
- contain the dial-in user's challenge to the NAS (2 32-bit numbers,
- 8 octets) and the low-order octets (Value3 and Value4) contain the
- dial-in user's response to the NAS challenge (2 32-bit numbers, 8
- octets).
-
-5.5. ARAP-Features
-
- Description
-
- This attribute is sent in an Access-Accept packet with Framed-
- Protocol of ARAP, and includes password information that the NAS
- should sent to the user in an ARAP "feature flags" packet.
-
- A summary of the ARAP-Features attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value1 | Value2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value3 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value4 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value5 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 71 for ARAP-Features.
-
- Length
-
- 16
-
-
-
-Rigney, et al. Informational [Page 25]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Value
-
- The Value field is a compound string containing information the
- NAS should send to the user in the ARAP "feature flags" packet.
-
- Value1: If zero, user cannot change their password. If non-zero
- user can. (RADIUS does not handle the password changing, just
- the attribute which indicates whether ARAP indicates they can.)
-
- Value2: Minimum acceptable password length, from 0 to 8.
-
- Value3: Password creation date in Macintosh format, defined as
- 32 unsigned bits representing seconds since Midnight GMT
- January 1, 1904.
-
- Value4: Password Expiration Delta from create date in seconds.
-
- Value5: Current RADIUS time in Macintosh format.
-
-5.6. ARAP-Zone-Access
-
- Description
-
- This attribute is included in an Access-Accept packet with
- Framed-Protocol of ARAP to indicate how the ARAP zone list for the
- user should be used.
-
- A summary of the ARAP-Zone-Access attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 72 for ARAP-Zone-Access.
-
- Length
-
- 6
-
-
-
-
-
-Rigney, et al. Informational [Page 26]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Value
-
- The Value field is four octets encoding an integer with one of the
- following values:
-
- 1 Only allow access to default zone
- 2 Use zone filter inclusively
- 4 Use zone filter exclusively
-
-
- The value 3 is skipped, not because these are bit flags, but
- because 3 in some ARAP implementations means "all zones" which is
- the same as not specifying a list at all under RADIUS.
-
- If this attribute is present and the value is 2 or 4 then a
- Filter-Id must also be present to name a zone list filter to apply
- the access flag to.
-
-5.7. ARAP-Security
-
- Description
-
- This attribute identifies the ARAP Security Module to be used in
- an Access-Challenge packet.
-
- A summary of the ARAP-Security attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 73 for ARAP-Security.
-
- Length
-
- 6
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 27]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Value
-
- The Value field is four octets, containing an integer specifying
- the security module signature, which is a Macintosh OSType.
- (Macintosh OSTypes are 4 ascii characters cast as a 32-bit
- integer)
-
-5.8. ARAP-Security-Data
-
- Description
-
- This attribute contains the actual security module challenge or
- response, and can be found in Access-Challenge and Access-Request
- packets.
-
- A summary of the ARAP-Security-Data attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 74 for ARAP-Security-Data.
-
- Length
-
- >=3
-
- String
-
- The String field contains the security module challenge or
- response associated with the ARAP Security Module specified in
- ARAP-Security.
-
-5.9. Password-Retry
-
- Description
-
- This attribute MAY be included in an Access-Reject to indicate how
- many authentication attempts a user may be allowed to attempt
- before being disconnected.
-
- It is primarily intended for use with ARAP authentication.
-
-
-
-
-Rigney, et al. Informational [Page 28]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- A summary of the Password-Retry attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 75 for Password-Retry.
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets, containing an integer specifying
- the number of password retry attempts to permit the user.
-
-5.10. Prompt
-
- Description
-
- This attribute is used only in Access-Challenge packets, and
- indicates to the NAS whether it should echo the user's response as
- it is entered, or not echo it.
-
-
- A summary of the Prompt attribute format is shown below. The fields
- are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 76 for Prompt.
-
-
-
-
-Rigney, et al. Informational [Page 29]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets.
-
- 0 No Echo
- 1 Echo
-
-5.11. Connect-Info
-
- Description
-
- This attribute is sent from the NAS to indicate the nature of the
- user's connection.
-
- The NAS MAY send this attribute in an Access-Request or
- Accounting-Request to indicate the nature of the user's
- connection.
-
- A summary of the Connect-Info attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Text...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 77 for Connect-Info.
-
- Length
-
- >= 3
-
- Text
-
- The Text field consists of UTF-8 encoded 10646 [8] characters.
- The connection speed SHOULD be included at the beginning of the
- first Connect-Info attribute in the packet. If the transmit and
- receive connection speeds differ, they may both be included in the
- first attribute with the transmit speed first (the speed the NAS
- modem transmits at), a slash (/), the receive speed, then
- optionally other information.
-
-
-
-Rigney, et al. Informational [Page 30]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- For example, "28800 V42BIS/LAPM" or "52000/31200 V90"
-
- More than one Connect-Info attribute may be present in an
- Accounting-Request packet to accommodate expected efforts by ITU
- to have modems report more connection information in a standard
- format that might exceed 252 octets.
-
-5.12. Configuration-Token
-
- Description
-
- This attribute is for use in large distributed authentication
- networks based on proxy. It is sent from a RADIUS Proxy Server to
- a RADIUS Proxy Client in an Access-Accept to indicate a type of
- user profile to be used. It should not be sent to a NAS.
-
- A summary of the Configuration-Token attribute format is shown below.
- The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | String ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 78 for Configuration-Token.
-
- Length
-
- >= 3
-
- String
-
- The String field is one or more octets. The actual format of the
- information is site or application specific, and a robust
- implementation SHOULD support the field as undistinguished octets.
-
- The codification of the range of allowed usage of this field is
- outside the scope of this specification.
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 31]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-5.13. EAP-Message
-
- Description
-
- This attribute encapsulates Extended Access Protocol [3] packets
- so as to allow the NAS to authenticate dial-in users via EAP
- without having to understand the EAP protocol.
-
- The NAS places any EAP messages received from the user into one or
- more EAP attributes and forwards them to the RADIUS Server as part
- of the Access-Request, which can return EAP messages in Access-
- Challenge, Access-Accept and Access-Reject packets.
-
- A RADIUS Server receiving EAP messages that it does not understand
- SHOULD return an Access-Reject.
-
- The NAS places EAP messages received from the authenticating peer
- into one or more EAP-Message attributes and forwards them to the
- RADIUS Server within an Access-Request message. If multiple EAP-
- Messages are contained within an Access-Request or Access-
- Challenge packet, they MUST be in order and they MUST be
- consecutive attributes in the Access-Request or Access-Challenge
- packet. Access-Accept and Access-Reject packets SHOULD only have
- ONE EAP-Message attribute in them, containing EAP-Success or EAP-
- Failure.
-
- It is expected that EAP will be used to implement a variety of
- authentication methods, including methods involving strong
- cryptography. In order to prevent attackers from subverting EAP by
- attacking RADIUS/EAP, (for example, by modifying the EAP-Success
- or EAP-Failure packets) it is necessary that RADIUS/EAP provide
- integrity protection at least as strong as those used in the EAP
- methods themselves.
-
- Therefore the Message-Authenticator attribute MUST be used to
- protect all Access-Request, Access-Challenge, Access-Accept, and
- Access-Reject packets containing an EAP-Message attribute.
-
- Access-Request packets including an EAP-Message attribute without
- a Message-Authenticator attribute SHOULD be silently discarded by
- the RADIUS server. A RADIUS Server supporting EAP-Message MUST
- calculate the correct value of the Message-Authenticator and
- silently discard the packet if it does not match the value sent.
- A RADIUS Server not supporting EAP-Message MUST return an Access-
- Reject if it receives an Access-Request containing an EAP-Message
- attribute. A RADIUS Server receiving an EAP-Message attribute that
- it does not understand MUST return an Access-Reject.
-
-
-
-
-Rigney, et al. Informational [Page 32]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Access-Challenge, Access-Accept, or Access-Reject packets
- including an EAP-Message attribute without a Message-Authenticator
- attribute SHOULD be silently discarded by the NAS. A NAS
- supporting EAP-Message MUST calculate the correct value of the
- Message-Authenticator and silently discard the packet if it does
- not match the value sent.
-
- A summary of the EAP-Message attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 79 for EAP-Message.
-
- Length
-
- >= 3
-
- String
-
- The String field contains EAP packets, as defined in [3]. If
- multiple EAP-Message attributes are present in a packet their
- values should be concatenated; this allows EAP packets longer than
- 253 octets to be passed by RADIUS.
-
-5.14. Message-Authenticator
-
- Description
-
- This attribute MAY be used to sign Access-Requests to prevent
- spoofing Access-Requests using CHAP, ARAP or EAP authentication
- methods. It MAY be used in any Access-Request. It MUST be used
- in any Access-Request, Access-Accept, Access-Reject or Access-
- Challenge that includes an EAP-Message attribute.
-
- A RADIUS Server receiving an Access-Request with a Message-
- Authenticator Attribute present MUST calculate the correct value
- of the Message-Authenticator and silently discard the packet if it
- does not match the value sent.
-
-
-
-
-
-
-Rigney, et al. Informational [Page 33]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- A RADIUS Client receiving an Access-Accept, Access-Reject or
- Access-Challenge with a Message-Authenticator Attribute present
- MUST calculate the correct value of the Message-Authenticator and
- silently discard the packet if it does not match the value sent.
-
- Earlier drafts of this memo used "Signature" as the name of this
- attribute, but Message-Authenticator is more precise. Its
- operation has not changed, just the name.
-
- A summary of the Message-Authenticator attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 80 for Message-Authenticator
-
- Length
-
- 18
-
- String
-
- When present in an Access-Request packet, Message-Authenticator is
- an HMAC-MD5 [9] checksum of the entire Access-Request packet,
- including Type, ID, Length and authenticator, using the shared
- secret as the key, as follows.
-
- Message-Authenticator = HMAC-MD5 (Type, Identifier, Length,
- Request Authenticator, Attributes)
-
- When the checksum is calculated the signature string should be
- considered to be sixteen octets of zero.
-
- For Access-Challenge, Access-Accept, and Access-Reject packets,
- the Message-Authenticator is calculated as follows, using the
- Request-Authenticator from the Access-Request this packet is in
- reply to:
-
- Message-Authenticator = HMAC-MD5 (Type, Identifier, Length,
- Request Authenticator, Attributes)
-
-
-
-
-
-Rigney, et al. Informational [Page 34]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- When the checksum is calculated the signature string should be
- considered to be sixteen octets of zero. The shared secret is
- used as the key for the HMAC-MD5 hash. The is calculated and
- inserted in the packet before the Response Authenticator is
- calculated.
-
- This attribute is not needed if the User-Password attribute is
- present, but is useful for preventing attacks on other types of
- authentication. This attribute is intended to thwart attempts by
- an attacker to setup a "rogue" NAS, and perform online dictionary
- attacks against the RADIUS server. It does not afford protection
- against "offline" attacks where the attacker intercepts packets
- containing (for example) CHAP challenge and response, and performs
- a dictionary attack against those packets offline.
-
- IP Security will eventually make this attribute unnecessary, so it
- should be considered an interim measure.
-
-5.15. ARAP-Challenge-Response
-
- Description
-
- This attribute is sent in an Access-Accept packet with Framed-
- Protocol of ARAP, and contains the response to the dial-in
- client's challenge.
-
- A summary of the ARAP-Challenge-Response attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 84 for ARAP-Challenge-Response.
-
- Length
-
- 10
-
-
-
-
-
-Rigney, et al. Informational [Page 35]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Value
-
- The Value field contains an 8 octet response to the dial-in
- client's challenge. The RADIUS server calculates this value by
- taking the dial-in client's challenge from the high order 8 octets
- of the ARAP-Password attribute and performing DES encryption on
- this value with the authenticating user's password as the key. If
- the user's password is less than 8 octets in length, the password
- is padded at the end with NULL octets to a length of 8 before
- using it as a key.
-
-5.16. Acct-Interim-Interval
-
- Description
-
- This attribute indicates the number of seconds between each
- interim update in seconds for this specific session. This value
- can only appear in the Access-Accept message.
-
- A summary of the Acct-Interim-Interval attribute format is shown
- below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 85 for Acct-Interim-Interval.
-
- Length
-
- 6
-
- Value
-
- The Value field contains the number of seconds between each
- interim update to be sent from the NAS for this session. The value
- MUST NOT be smaller than 60. The value SHOULD NOT be smaller than
- 600, and careful consideration should be given to its impact on
- network traffic.
-
-
-
-
-
-
-Rigney, et al. Informational [Page 36]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-5.17. NAS-Port-Id
-
- Description
-
- This Attribute contains a text string which identifies the port of
- the NAS which is authenticating the user. It is only used in
- Access-Request and Accounting-Request packets. Note that this is
- using "port" in its sense of a physical connection on the NAS, not
- in the sense of a TCP or UDP port number.
-
- Either NAS-Port or NAS-Port-Id SHOULD be present in an Access-
- Request packet, if the NAS differentiates among its ports. NAS-
- Port-Id is intended for use by NASes which cannot conveniently
- number their ports.
-
- A summary of the NAS-Port-Id Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Text...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- Type
-
- 87 for NAS-Port-Id.
-
- Length
-
- >= 3
-
- Text
-
- The Text field contains the name of the port using UTF-8 encoded
- 10646 [8] characters.
-
-5.18. Framed-Pool
-
- Description
-
- This Attribute contains the name of an assigned address pool that
- SHOULD be used to assign an address for the user. If a NAS does
- not support multiple address pools, the NAS should ignore this
- Attribute. Address pools are usually used for IP addresses, but
- can be used for other protocols if the NAS supports pools for
- those protocols.
-
-
-
-Rigney, et al. Informational [Page 37]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- A summary of the Framed-Pool Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | String...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 88 for Framed-Pool
-
- Length
-
- >= 3
-
- String
-
- The string field contains the name of an assigned address pool
- configured on the NAS.
-
-5.19. Table of Attributes
-
- The following table provides a guide to which attributes may be found
- in which kind of packets. Acct-Input-Gigawords, Acct-Output-
- Gigawords, Event-Timestamp, and NAS-Port-Id may have 0-1 instances in
- an Accounting-Request packet. Connect-Info may have 0+ instances in
- an Accounting-Request packet. The other attributes added in this
- document must not be present in an Accounting-Request.
-
-Request Accept Reject Challenge # Attribute
-0-1 0 0 0 70 ARAP-Password [Note 1]
-0 0-1 0 0-1 71 ARAP-Features
-0 0-1 0 0 72 ARAP-Zone-Access
-0-1 0 0 0-1 73 ARAP-Security
-0+ 0 0 0+ 74 ARAP-Security-Data
-0 0 0-1 0 75 Password-Retry
-0 0 0 0-1 76 Prompt
-0-1 0 0 0 77 Connect-Info
-0 0+ 0 0 78 Configuration-Token
-0+ 0+ 0+ 0+ 79 EAP-Message [Note 1]
-0-1 0-1 0-1 0-1 80 Message-Authenticator [Note 1]
-0 0-1 0 0-1 84 ARAP-Challenge-Response
-0 0-1 0 0 85 Acct-Interim-Interval
-0-1 0 0 0 87 NAS-Port-Id
-0 0-1 0 0 88 Framed-Pool
-Request Accept Reject Challenge # Attribute
-
-
-
-Rigney, et al. Informational [Page 38]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- [Note 1] An Access-Request that contains either a User-Password or
- CHAP-Password or ARAP-Password or one or more EAP-Message attributes
- MUST NOT contain more than one type of those four attributes. If it
- does not contain any of those four attributes, it SHOULD contain a
- Message-Authenticator. If any packet type contains an EAP-Message
- attribute it MUST also contain a Message-Authenticator.
-
- The following table defines the above table entries.
-
- 0 This attribute MUST NOT be present
- 0+ Zero or more instances of this attribute MAY be present.
- 0-1 Zero or one instance of this attribute MAY be present.
- 1 Exactly one instance of this attribute MUST be present.
-
-6. IANA Considerations
-
- The Packet Type Codes, Attribute Types, and Attribute Values defined
- in this document are registered by the Internet Assigned Numbers
- Authority (IANA) from the RADIUS name spaces as described in the
- "IANA Considerations" section of [1], in accordance with BCP 26 [10].
-
-7. Security Considerations
-
- The attributes other than Message-Authenticator and EAP-Message in
- this document have no additional security considerations beyond those
- already identified in [1].
-
-7.1. Message-Authenticator Security
-
- Access-Request packets with a User-Password establish the identity of
- both the user and the NAS sending the Access-Request, because of the
- way the shared secret between NAS and RADIUS server is used.
- Access-Request packets with CHAP-Password or EAP-Message do not have
- a User-Password attribute, so the Message-Authenticator attribute
- should be used in access-request packets that do not have a User-
- Password, in order to establish the identity of the NAS sending the
- request.
-
-7.2. EAP Security
-
- Since the purpose of EAP is to provide enhanced security for PPP
- authentication, it is critical that RADIUS support for EAP be secure.
- In particular, the following issues must be addressed:
-
- Separation of EAP server and PPP authenticator
- Connection hijacking
- Man in the middle attacks
- Multiple databases
-
-
-
-Rigney, et al. Informational [Page 39]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Negotiation attacks
-
-7.2.1. Separation of EAP server and PPP authenticator
-
- It is possible for the EAP endpoints to mutually authenticate,
- negotiate a ciphersuite, and derive a session key for subsequent use
- in PPP encryption.
-
- This does not present an issue on the peer, since the peer and EAP
- client reside on the same machine; all that is required is for the
- EAP client module to pass the session key to the PPP encryption
- module.
-
- The situation is more complex when EAP is used with RADIUS, since the
- PPP authenticator will typically not reside on the same machine as
- the EAP server. For example, the EAP server may be a backend security
- server, or a module residing on the RADIUS server.
-
- In the case where the EAP server and PPP authenticator reside on
- different machines, there are several implications for security.
- Firstly, mutual authentication will occur between the peer and the
- EAP server, not between the peer and the authenticator. This means
- that it is not possible for the peer to validate the identity of the
- NAS or tunnel server that it is speaking to.
-
- As described earlier, when EAP/RADIUS is used to encapsulate EAP
- packets, the Message-Authenticator attribute is required in
- EAP/RADIUS Access-Requests sent from the NAS or tunnel server to the
- RADIUS server. Since the Message-Authenticator attribute involves a
- HMAC-MD5 hash, it is possible for the RADIUS server to verify the
- integrity of the Access-Request as well as the NAS or tunnel server's
- identity. Similarly, Access-Challenge packets sent from the RADIUS
- server to the NAS are also authenticated and integrity protected
- using an HMAC-MD5 hash, enabling the NAS or tunnel server to
- determine the integrity of the packet and verify the identity of the
- RADIUS server. Moreover, EAP packets sent via methods that contain
- their own integrity protection cannot be successfully modified by a
- rogue NAS or tunnel server.
-
- The second issue that arises in the case of an EAP server and PPP
- authenticator residing on different machines is that the session key
- negotiated between the peer and EAP server will need to be
- transmitted to the authenticator. Therefore a mechanism needs to be
- provided to transmit the session key from the EAP server to the
- authenticator or tunnel server that needs to use the key. The
- specification of this transit mechanism is outside the scope of this
- document.
-
-
-
-
-Rigney, et al. Informational [Page 40]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-7.2.2. Connection hijacking
-
- In this form of attack, the attacker attempts to inject packets into
- the conversation between the NAS and the RADIUS server, or between
- the RADIUS server and the backend security server. RADIUS does not
- support encryption, and as described in [1], only Access-Reply and
- Access-Challenge packets are integrity protected. Moreover, the
- integrity protection mechanism described in [1] is weaker than that
- likely to be used by some EAP methods, making it possible to subvert
- those methods by attacking EAP/RADIUS.
-
- In order to provide for authentication of all packets in the EAP
- exchange, all EAP/RADIUS packets MUST be authenticated using the
- Message-Authenticator attribute, as described previously.
-
-7.2.3. Man in the middle attacks
-
- Since RADIUS security is based on shared secrets, end-to-end security
- is not provided in the case where authentication or accounting
- packets are forwarded along a proxy chain. As a result, attackers
- gaining control of a RADIUS proxy will be able to modify EAP packets
- in transit.
-
-7.2.4. Multiple databases
-
- In many cases a backend security server will be deployed along with a
- RADIUS server in order to provide EAP services. Unless the backend
- security server also functions as a RADIUS server, two separate user
- databases will exist, each containing information about the security
- requirements for the user. This represents a weakness, since security
- may be compromised by a successful attack on either of the servers,
- or their backend databases. With multiple user databases, adding a
- new user may require multiple operations, increasing the chances for
- error. The problems are further magnified in the case where user
- information is also being kept in an LDAP server. In this case, three
- stores of user information may exist.
-
- In order to address these threats, consolidation of databases is
- recommended. This can be achieved by having both the RADIUS server
- and backend security server store information in the same backend
- database; by having the backend security server provide a full RADIUS
- implementation; or by consolidating both the backend security server
- and the RADIUS server onto the same machine.
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 41]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-7.2.5. Negotiation attacks
-
- In a negotiation attack, a rogue NAS, tunnel server, RADIUS proxy or
- RADIUS server causes the authenticating peer to choose a less secure
- authentication method so as to make it easier to obtain the user's
- password. For example, a session that would normally be authenticated
- with EAP would instead authenticated via CHAP or PAP; alternatively,
- a connection that would normally be authenticated via one EAP type
- occurs via a less secure EAP type, such as MD5. The threat posed by
- rogue devices, once thought to be remote, has gained currency given
- compromises of telephone company switching systems, such as those
- described in [11].
-
- Protection against negotiation attacks requires the elimination of
- downward negotiations. This can be achieved via implementation of
- per-connection policy on the part of the authenticating peer, and
- per-user policy on the part of the RADIUS server.
-
- For the authenticating peer, authentication policy should be set on a
- per-connection basis. Per-connection policy allows an authenticating
- peer to negotiate EAP when calling one service, while negotiating
- CHAP for another service, even if both services are accessible via
- the same phone number.
-
- With per-connection policy, an authenticating peer will only attempt
- to negotiate EAP for a session in which EAP support is expected. As a
- result, there is a presumption that an authenticating peer selecting
- EAP requires that level of security. If it cannot be provided, it is
- likely that there is some kind of misconfiguration, or even that the
- authenticating peer is contacting the wrong server. Should the NAS
- not be able to negotiate EAP, or should the EAP-Request sent by the
- NAS be of a different EAP type than what is expected, the
- authenticating peer MUST disconnect. An authenticating peer expecting
- EAP to be negotiated for a session MUST NOT negotiate CHAP or PAP.
-
- For a NAS, it may not be possible to determine whether a user is
- required to authenticate with EAP until the user's identity is known.
- For example, for shared-uses NASes it is possible for one reseller to
- implement EAP while another does not. In such cases, if any users of
- the NAS MUST do EAP, then the NAS MUST attempt to negotiate EAP for
- every call. This avoids forcing an EAP-capable client to do more than
- one authentication, which weakens security.
-
- If CHAP is negotiated, the NAS will pass the User-Name and CHAP-
- Password attributes to the RADIUS Server in an Access-Request packet.
- If the user is not required to use EAP, then the RADIUS Server will
- respond with an Access-Accept or Access-Reject packet as appropriate.
- However, if CHAP has been negotiated but EAP is required, the RADIUS
-
-
-
-Rigney, et al. Informational [Page 42]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- server MUST respond with an Access-Reject, rather than an Access-
- Challenge/EAP-Message/EAP-Request packet. The authenticating peer
- MUST refuse to renegotiate authentication, even if the renegotiation
- is from CHAP to EAP.
-
- If EAP is negotiated but is not supported by the RADIUS proxy or
- server, then the server or proxy MUST respond with an Access-Reject.
- In these cases, the NAS MUST send an LCP-Terminate and disconnect the
- user. This is the correct behavior since the authenticating peer is
- expecting EAP to be negotiated, and that expectation cannot be
- fulfilled. An EAP-capable authenticating peer MUST refuse to
- renegotiate the authentication protocol if EAP had initially been
- negotiated. Note that problems with a non-EAP capable RADIUS proxy
- could prove difficult to diagnose, since a user dialing in from one
- location (with an EAP-capable proxy) might be able to successfully
- authenticate via EAP, while the same user dialing into another
- location (and encountering an EAP-incapable proxy) might be
- consistently disconnected.
-
-8. References
-
- [1] Rigney, C., Willens, S., Rubens, A. and W. Simpson, "Remote
- Authentication Dial In User Service (RADIUS)", RFC 2865, June
- 2000.
-
- [2] Rigney, C., "RADIUS Accounting", RFC 2866, June 2000.
-
- [3] Blunk, L. and J. Vollbrecht, "PPP Extensible Authentication
- Protocol (EAP)", RFC 2284, March 1998.
-
- [4] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March, 1997.
-
- [5] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
- October 1994.
-
- [6] Zorn, G., Leifer, D., Rubens, A., Shriver, J., Holdrege, M. and
- I. Goyret, "RADIUS Attributes for Tunnel Protocol Support", RFC
- 2868, June 2000.
-
- [7] Zorn, G., Aboba, B. and D. Mitton, "RADIUS Accounting
- Modifications for Tunnel Protocol Support", RFC 2867, June 2000.
-
- [8] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC
- 2279, January 1998.
-
-
-
-
-
-
-Rigney, et al. Informational [Page 43]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- [9] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-Hashing
- for Message Authentication", RFC 2104, February 1997.
-
- [10] Alvestrand, H. and T. Narten, "Guidelines for Writing an IANA
- Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.
-
- [11] Slatalla, M., and Quittner, J., "Masters of Deception."
- HarperCollins, New York, 1995.
-
-9. Acknowledgements
-
- RADIUS and RADIUS Accounting were originally developed by Livingston
- Enterprises (now part of Lucent Technologies) for their PortMaster
- series of Network Access Servers.
-
- The section on ARAP is adopted with permission from "Using RADIUS to
- Authenticate Apple Remote Access Connections" by Ward Willats of Cyno
- Technologies (ward@cyno.com).
-
- The section on Acct-Interim-Interval is adopted with permission from
- an earlier work in progress by Pat Calhoun of Sun Microsystems, Mark
- Beadles of Compuserve, and Alex Ratcliffe of UUNET Technologies.
-
- The section on EAP is adopted with permission from an earlier work in
- progress by Pat Calhoun of Sun Microsystems, Allan Rubens of Merit
- Network, and Bernard Aboba of Microsoft. Thanks also to Dave Dawson
- and Karl Fox of Ascend, and Glen Zorn and Narendra Gidwani of
- Microsoft for useful discussions of this problem space.
-
-10. Chair's Address
-
- The RADIUS working group can be contacted via the current chair:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- Phone: +1 925 737 2100
- EMail: cdr@telemancy.com
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 44]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-11. Authors' Addresses
-
- Questions about this memo can also be directed to:
-
- Carl Rigney
- Livingston Enterprises
- 4464 Willow Road
- Pleasanton, California 94588
-
- EMail: cdr@telemancy.com
-
- Questions on ARAP and RADIUS may be directed to:
-
- Ward Willats
- Cyno Technologies
- 1082 Glen Echo Ave
- San Jose, CA 95125
-
- Phone: +1 408 297 7766
- EMail: ward@cyno.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 45]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
- Questions on EAP and RADIUS may be directed to any of the following:
-
- Pat R. Calhoun
- Network and Security Research Center
- Sun Microsystems, Inc.
- 15 Network Circle
- Menlo Park, CA 94025
-
- Phone: +1 650 786 7733
- EMail: pcalhoun@eng.sun.com
-
-
- Allan C. Rubens
- Tut Systems, Inc.
- 220 E. Huron, Suite 260
- Ann Arbor, MI 48104
-
- Phone: +1 734 995 1697
- EMail: arubens@tutsys.com
-
-
- Bernard Aboba
- Microsoft Corporation
- One Microsoft Way
- Redmond, WA 98052
-
- Phone: +1 425 936 6605
- EMail: bernarda@microsoft.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 46]
-
-RFC 2869 RADIUS Extensions June 2000
-
-
-12. Full Copyright Statement
-
- Copyright (C) The Internet Society (2000). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rigney, et al. Informational [Page 47]
-
diff --git a/doc/rfc3078.txt b/doc/rfc3078.txt
deleted file mode 100644
index 5bbcc13..0000000
--- a/doc/rfc3078.txt
+++ /dev/null
@@ -1,675 +0,0 @@
-
-
-
-
-
-
-Network Working Group G. Pall
-Request for Comments: 3078 Microsoft Corporation
-Category: Informational G. Zorn
-Updates: 2118 cisco Systems
- March 2001
-
-
- Microsoft Point-To-Point Encryption (MPPE) Protocol
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2001). All Rights Reserved.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) provides a standard method for
- transporting multi-protocol datagrams over point-to-point links.
-
- The PPP Compression Control Protocol provides a method to negotiate
- and utilize compression protocols over PPP encapsulated links.
-
- This document describes the use of the Microsoft Point to Point
- Encryption (MPPE) to enhance the confidentiality of PPP-encapsulated
- packets.
-
-Specification of Requirements
-
- In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
- "recommended", "SHOULD", and "SHOULD NOT" are to be interpreted as
- described in [5].
-
-1. Introduction
-
- The Microsoft Point to Point Encryption scheme is a means of
- representing Point to Point Protocol (PPP) packets in an encrypted
- form.
-
- MPPE uses the RSA RC4 [3] algorithm to provide data confidentiality.
- The length of the session key to be used for initializing encryption
- tables can be negotiated. MPPE currently supports 40-bit and 128-bit
- session keys.
-
-
-
-
-Pall & Zorn Informational [Page 1]
-
-RFC 3078 MPPE Protocol March 2001
-
-
- MPPE session keys are changed frequently; the exact frequency depends
- upon the options negotiated, but may be every packet.
-
- MPPE is negotiated within option 18 [4] in the Compression Control
- Protocol.
-
-2. Configuration Option Format
-
-
- Description
-
- The CCP Configuration Option negotiates the use of MPPE on the
- link. By default (i.e., if the negotiation of MPPE is not
- attempted), no encryption is used. If, however, MPPE negotiation
- is attempted and fails, the link SHOULD be terminated.
-
- A summary of the CCP Configuration Option format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Supported Bits |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Supported Bits |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 18
-
- Length
-
- 6
-
- Supported Bits
-
- This field is 4 octets, most significant octet first.
-
- 3 2 1
- 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |H| |M|S|L|D| |C|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-Pall & Zorn Informational [Page 2]
-
-RFC 3078 MPPE Protocol March 2001
-
-
- The 'C' bit is used by MPPC [4] and is not discussed further in this
- memo. The 'D' bit is obsolete; although some older peers may attempt
- to negotiate this option, it SHOULD NOT be accepted. If the 'L' bit
- is set (corresponding to a value of 0x20 in the least significant
- octet), this indicates the desire of the sender to negotiate the use
- of 40-bit session keys. If the 'S' bit is set (corresponding to a
- value of 0x40 in the least significant octet), this indicates the
- desire of the sender to negotiate the use of 128-bit session keys.
- If the 'M' bit is set (corresponding to a value of 0x80 in the least
- significant octet), this indicates the desire of the sender to
- negotiate the use of 56-bit session keys. If the 'H' bit is set
- (corresponding to a value of 0x01 in the most significant octet),
- this indicates that the sender wishes to negotiate the use of
- stateless mode, in which the session key is changed after the
- transmission of each packet (see section 10, below). In the
- following discussion, the 'S', 'M' and 'L' bits are sometimes
- referred to collectively as "encryption options".
-
- All other bits are reserved and MUST be set to 0.
-
-2.1. Option Negotiation
-
- MPPE options are negotiated as described in [2]. In particular, the
- negotiation initiator SHOULD request all of the options it supports.
- The responder SHOULD NAK with a single encryption option (note that
- stateless mode may always be negotiated, independent of and in
- addition to an encryption option). If the responder supports more
- than one encryption option in the set requested by the initiator, the
- option selected SHOULD be the "strongest" option offered.
- Informally, the strength of the MPPE encryption options may be
- characterized as follows:
-
- STRONGEST
- 128-bit encryption ('S' bit set)
- 56-bit encryption ('M' bit set)
- 40-bit encryption ('L' bit set)
- WEAKEST
-
- This characterization takes into account the generally accepted
- strength of the cipher.
-
- The initiator SHOULD then either send another request containing the
- same option(s) as the responder's NAK or cancel the negotiation,
- dropping the connection.
-
-
-
-
-
-
-
-Pall & Zorn Informational [Page 3]
-
-RFC 3078 MPPE Protocol March 2001
-
-
-3. MPPE Packets
-
- Before any MPPE packets are transmitted, PPP MUST reach the Network-
- Layer Protocol phase and the CCP Control Protocol MUST reach the
- Opened state.
-
- Exactly one MPPE datagram is encapsulated in the PPP Information
- field. The PPP Protocol field indicates type 0x00FD for all
- encrypted datagrams.
-
- The maximum length of the MPPE datagram transmitted over a PPP link
- is the same as the maximum length of the Information field of a PPP
- encapsulated packet.
-
- Only packets with PPP Protocol numbers in the range 0x0021 to 0x00FA
- are encrypted. Other packets are not passed thru the MPPE processor
- and are sent with their original PPP Protocol numbers.
-
- Padding
-
- It is recommended that padding not be used with MPPE. If the
- sender uses padding it MUST negotiate the Self-Describing-
- Padding Configuration option [10] during LCP phase and use
- self-describing pads.
-
- Reliability and Sequencing
-
- The MPPE scheme does not require a reliable link. Instead, it
- relies on a 12-bit coherency count in each packet to keep the
- encryption tables synchronized. If stateless mode has not been
- negotiated and the coherency count in the received packet does
- not match the expected count, the receiver MUST send a CCP
- Reset-Request packet to cause the resynchronization of the RC4
- tables.
-
- MPPE expects packets to be delivered in sequence.
-
- MPPE MAY be used over a reliable link, as described in "PPP
- Reliable Transmission" [6], but this typically just adds
- unnecessary overhead since only the coherency count is
- required.
-
- Data Expansion
-
- The MPPE scheme does not expand or compress data. The number
- of octets input to and output from the MPPE processor are the
- same.
-
-
-
-
-Pall & Zorn Informational [Page 4]
-
-RFC 3078 MPPE Protocol March 2001
-
-
-3.1. Packet Format
-
- A summary of the MPPE packet format is shown below. The fields are
- transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | PPP Protocol |A|B|C|D| Coherency Count |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Encrypted Data...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- PPP Protocol
-
- The PPP Protocol field is described in the Point-to-Point
- Protocol Encapsulation [1].
-
- When MPPE is successfully negotiated by the PPP Compression
- Control Protocol, the value of this field is 0x00FD. This
- value MAY be compressed when Protocol-Field-Compression is
- negotiated.
-
- Bit A
-
- This bit indicates that the encryption tables were initialized
- before this packet was generated. The receiver MUST re-
- initialize its tables with the current session key before
- decrypting this packet. This bit is referred to as the FLUSHED
- bit in this document. If the stateless option has been
- negotiated, this bit MUST be set on every encrypted packet.
- Note that MPPC and MPPE both recognize the FLUSHED bit;
- therefore, if the stateless option is negotiated, it applies to
- both MPPC and MPPE.
-
- Bit B
-
- This bit does not have any significance in MPPE.
-
- Bit C
-
- This bit does not have any significance in MPPE.
-
- Bit D
-
- This bit set to 1 indicates that the packet is encrypted. This
- bit set to 0 means that this packet is not encrypted.
-
-
-
-
-Pall & Zorn Informational [Page 5]
-
-RFC 3078 MPPE Protocol March 2001
-
-
- Coherency Count
-
- The coherency count is used to assure that the packets are sent
- in proper order and that no packet has been dropped. It is a
- monotonically increasing counter which incremented by 1 for
- each packet sent. When the counter reaches 4095 (0x0FFF), it
- is reset to 0.
-
- Encrypted Data
-
- The encrypted data begins with the protocol field. For
- example, in case of an IP packet (0x0021 followed by an IP
- header), the MPPE processor will first encrypt the protocol
- field and then encrypt the IP header.
-
- If the packet contains header compression, the MPPE processor
- is applied AFTER header compression is performed and MUST be
- applied to the compressed header as well. For example, if a
- packet contained the protocol type 0x002D (for a compressed
- TCP/IP header), the MPPE processor would first encrypt 0x002D
- and then it would encrypt the compressed Van-Jacobsen TCP/IP
- header.
-
- Implementation Note
-
- If both MPPE and MPPC are negotiated on the same link, the MPPE
- processor MUST be invoked after the MPPC processor by the
- sender and the MPPE processor MUST be invoked before the MPPC
- processor by the receiver.
-
-4. Initial Session Keys
-
- In the current implementation, initial session keys are derived from
- peer credentials; however, other derivation methods are possible.
- For example, some authentication methods (such as Kerberos [8] and
- TLS [9]) produce session keys as side effects of authentication;
- these keys may be used by MPPE in the future. For this reason, the
- techniques used to derive initial MPPE session keys are described in
- separate documents.
-
-5. Initializing RC4 Using a Session Key
-
- Once an initial session key has been derived, the RC4 context is
- initialized as follows:
-
- rc4_key(RC4Key, Length_Of_Key, Initial_Session_Key)
-
-
-
-
-
-Pall & Zorn Informational [Page 6]
-
-RFC 3078 MPPE Protocol March 2001
-
-
-6. Encrypting Data
-
- Once initialized, data is encrypted using the following function and
- transmitted with the CCP and MPPE headers.
-
- EncryptedData = rc4(RC4Key, Length_Of_Data, Data)
-
-7. Changing Keys
-
-7.1. Stateless Mode Key Changes
-
- If stateless encryption has been negotiated, the session key changes
- every time the coherency count changes; i.e., on every packet. In
- stateless mode, the sender MUST change its key before encrypting and
- transmitting each packet and the receiver MUST change its key after
- receiving, but before decrypting, each packet (see "Synchronization",
- below).
-
-7.2. Stateful Mode Key Changes
-
- If stateful encryption has been negotiated, the sender MUST change
- its key before encrypting and transmitting any packet in which the
- low order octet of the coherency count equals 0xFF (the "flag"
- packet), and the receiver MUST change its key after receiving, but
- before decrypting, a "flag" packet (see "Synchronization", below).
-
-7.3. The MPPE Key Change Algorithm
-
- The following method is used to change keys:
-
- /*
- * SessionKeyLength is 8 for 40-bit keys, 16 for 128-bit keys.
- *
- * SessionKey is the same as StartKey in the first call for
- * a given session.
- */
-
- void
- GetNewKeyFromSHA(
- IN unsigned char *StartKey,
- IN unsigned char *SessionKey,
- IN unsigned long SessionKeyLength
- OUT unsigned char *InterimKey )
- {
- unsigned char Digest[20];
-
- ZeroMemory(Digest, 20);
-
-
-
-
-Pall & Zorn Informational [Page 7]
-
-RFC 3078 MPPE Protocol March 2001
-
-
- /*
- * SHAInit(), SHAUpdate() and SHAFinal()
- * are an implementation of the Secure
- * Hash Algorithm [7]
- */
-
- SHAInit(Context);
- SHAUpdate(Context, StartKey, SessionKeyLength);
- SHAUpdate(Context, SHApad1, 40);
- SHAUpdate(Context, SessionKey, SessionKeyLength);
- SHAUpdate(Context, SHApad2, 40);
- SHAFinal(Context, Digest);
-
- MoveMemory(InterimKey, Digest, SessionKeyLength);
- }
-
- The RC4 tables are re-initialized using the newly created interim key:
-
- rc4_key(RC4Key, Length_Of_Key, InterimKey)
-
- Finally, the interim key is encrypted using the new tables to produce
- a new session key:
-
- SessionKey = rc4(RC4Key, Length_Of_Key, InterimKey)
-
- For 40-bit session keys the most significant three octets of the new
- session key are now set to 0xD1, 0x26 and 0x9E respectively; for 56-
- bit keys, the most significant octet is set to 0xD1.
-
- Finally, the RC4 tables are re-initialized using the new session key:
-
- rc4_key(RC4Key, Length_Of_Key, SessionKey)
-
-8. Synchronization
-
- Packets may be lost during transfer. The following sections describe
- synchronization for both the stateless and stateful cases.
-
-8.1. Stateless Synchronization
-
- If stateless encryption has been negotiated and the coherency count
- in the received packet (C1) is greater than the coherency count in
- the last packet previously received (C2), the receiver MUST perform N
- = C1 - C2 key changes before decrypting the packet, in order to
- ensure that its session key is synchronized with the session key of
- the sender. Normally, the value of N will be 1; however, if
- intervening packets have been lost, N may be greater than 1. For
- example, if C1 = 5 and C2 = 02 then N = 3 key changes are required.
-
-
-
-Pall & Zorn Informational [Page 8]
-
-RFC 3078 MPPE Protocol March 2001
-
-
- Since the FLUSHED bit is set on every packet if stateless encryption
- was negotiated, the transmission of CCP Reset-Request packets is not
- required for synchronization.
-
-8.2. Stateful Synchronization
-
- If stateful encryption has been negotiated, the sender MUST change
- its key before encrypting and transmitting any packet in which the
- low order octet of the coherency count equals 0xFF (the "flag"
- packet), and the receiver MUST change its key after receiving, but
- before decrypting, a "flag" packet. However, the "flag" packet may
- be lost. If this happens, the low order octet of the coherency count
- in the received packet will be less than that in the last packet
- previously received. In this case, the receiver MUST perform a key
- change before decrypting the newly received packet, (since the sender
- will have changed its key before transmitting the packet), then send
- a CCP Reset-Request packet (see below). It is possible that 256 or
- more consecutive packets could be lost; the receiver SHOULD detect
- this condition and perform the number of key changes necessary to
- resynchronize with the sender.
-
- If packet loss is detected while using stateful encryption, the
- receiver MUST drop the packet and send a CCP Reset-Request packet
- without data. After transmitting the CCP Reset-Request packet, the
- receiver SHOULD silently discard all packets until a packet is
- received with the FLUSHED bit set. On receiving a packet with the
- FLUSHED bit set, the receiver MUST set its coherency count to the one
- received in that packet and re-initialize its RC4 tables using the
- current session key:
-
- rc4_key(RC4Key, Length_Of_Key, SessionKey)
-
- When the sender receives a CCP Reset-Request packet, it MUST re-
- initialize its own RC4 tables using the same method and set the
- FLUSHED bit in the next packet sent. Thus synchronization is
- achieved without a CCP Reset-Ack packet.
-
-9. Security Considerations
-
- Because of the way that the RC4 tables are reinitialized during
- stateful synchronization, it is possible that two packets may be
- encrypted using the same key. For this reason, the stateful mode
- SHOULD NOT be used in lossy network environments (e.g., layer two
- tunnels on the Internet).
-
-
-
-
-
-
-
-Pall & Zorn Informational [Page 9]
-
-RFC 3078 MPPE Protocol March 2001
-
-
- Since the MPPE negotiation is not integrity protected, an active
- attacker could alter the strength of the keys used by modifying the
- Supported Bits field of the CCP Configuration Option packet. The
- effects of this attack can be minimized through appropriate peer
- configuration, however.
-
- Peers MUST NOT transmit user data until the MPPE negotiation is
- complete.
-
- It is possible that an active attacker could modify the coherency
- count of a packet, causing the peers to lose synchronization.
-
- An active denial-of-service attack could be mounted by methodically
- inverting the value of the 'D' bit in the MPPE packet header.
-
-10. References
-
- [1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD
- 51, RFC 1661, July 1994.
-
- [2] Rand, D., "The PPP Compression Control Protocol (CCP)", RFC
- 1962, June 1996.
-
- [3] RC4 is a proprietary encryption algorithm available under
- license from RSA Data Security Inc. For licensing information,
- contact:
-
- RSA Data Security, Inc.
- 100 Marine Parkway
- Redwood City, CA 94065-1031
-
- [4] Pall, G., "Microsoft Point-to-Point Compression (MPPC)
- Protocol", RFC 2118, March 1997.
-
- [5] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
- [6] Rand, D., "PPP Reliable Transmission", RFC 1663, July 1994.
-
- [7] "Secure Hash Standard", Federal Information Processing Standards
- Publication 180-1, National Institute of Standards and
- Technology, April 1995.
-
- [8] Kohl, J. and C. Neuman "The Kerberos Network Authentication
- System (V5)", RFC 1510, September 1993.
-
- [9] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC
- 2246, January 1999.
-
-
-
-Pall & Zorn Informational [Page 10]
-
-RFC 3078 MPPE Protocol March 2001
-
-
- [10] Simpson, W., Editor, "PPP LCP Extensions", RFC 1570, January
- 1994.
-
-11. Acknowledgements
-
- Anthony Bell, Richard B. Ward, Terence Spies and Thomas Dimitri, all
- of Microsoft Corporation, significantly contributed to the design and
- development of MPPE.
-
- Additional thanks to Robert Friend, Joe Davies, Jody Terrill, Archie
- Cobbs, Mark Deuser, and Jeff Haag, for useful feedback.
-
-12. Authors' Addresses
-
- Questions about this memo can be directed to:
-
- Gurdeep Singh Pall
- Microsoft Corporation
- One Microsoft Way
- Redmond, Washington 98052
- USA
-
- Phone: +1 425 882 8080
- Fax: +1 425 936 7329
- EMail: gurdeep@microsoft.com
-
-
- Glen Zorn
- cisco Systems
- 500 108th Avenue N.E.
- Suite 500
- Bellevue, Washington 98004
- USA
-
- Phone: +1 425 438 8218
- Fax: +1 425 438 1848
- EMail: gwz@cisco.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Pall & Zorn Informational [Page 11]
-
-RFC 3078 MPPE Protocol March 2001
-
-
-13. Full Copyright Statement
-
- Copyright (C) The Internet Society (2001). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Pall & Zorn Informational [Page 12]
-
diff --git a/doc/rfc3079.txt b/doc/rfc3079.txt
deleted file mode 100644
index 4d7ba0d..0000000
--- a/doc/rfc3079.txt
+++ /dev/null
@@ -1,1179 +0,0 @@
-
-
-
-
-
-
-Network Working Group G. Zorn
-Request for Comments: 3079 cisco Systems
-Category: Informational March 2001
-
-
- Deriving Keys for use with Microsoft Point-to-Point Encryption (MPPE)
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2001). All Rights Reserved.
-
-Abstract
-
- The Point-to-Point Protocol (PPP) provides a standard method for
- transporting multi-protocol datagrams over point-to-point links.
-
- The PPP Compression Control Protocol provides a method to negotiate
- and utilize compression protocols over PPP encapsulated links.
-
- Microsoft Point to Point Encryption (MPPE) is a means of representing
- PPP packets in an encrypted form. MPPE uses the RSA RC4 algorithm to
- provide data confidentiality. The length of the session key to be
- used for initializing encryption tables can be negotiated. MPPE
- currently supports 40-bit, 56-bit and 128-bit session keys. MPPE
- session keys are changed frequently; the exact frequency depends upon
- the options negotiated, but may be every packet. MPPE is negotiated
- within option 18 in the Compression Control Protocol.
-
- This document describes the method used to derive initial MPPE
- session keys from a variety of credential types. It is expected that
- this memo will be updated whenever Microsoft defines a new key
- derivation method for MPPE, since its primary purpose is to provide
- an open, easily accessible reference for third-parties wishing to
- interoperate with Microsoft products.
-
- MPPE itself (including the protocol used to negotiate its use, the
- details of the encryption method used and the algorithm used to
- change session keys during a session) is described in RFC 3078.
-
-
-
-
-
-
-
-Zorn Informational [Page 1]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-Table of Contents
-
- 1. Specification of Requirements ............................... 2
- 2. Deriving Session Keys from MS-CHAP Credentials .............. 2
- 2.1. Generating 40-bit Session Keys ............................ 3
- 2.2. Generating 56-bit Session Keys ............................ 3
- 2.3. Generating 128-bit Session Keys ........................... 4
- 2.4. Key Derivation Functions .................................. 5
- 2.5. Sample Key Derivations .................................... 6
- 2.5.1. Sample 40-bit Key Derivation ............................ 6
- 2.5.2. Sample 56-bit Key Derivation ............................ 6
- 2.5.3. Sample 128-bit Key Derivation ........................... 7
- 3. Deriving Session Keys from MS-CHAP-2 Credentials ............ 7
- 3.1. Generating 40-bit Session Keys ............................ 8
- 3.2. Generating 56-bit Session Keys ............................ 9
- 3.3. Generating 128-bit Session Keys ...........................10
- 3.4. Key Derivation Functions ..................................11
- 3.5. Sample Key Derivations ....................................13
- 3.5.1. Sample 40-bit Key Derivation ............................13
- 3.5.2. Sample 56-bit Key Derivation ............................14
- 3.5.3. Sample 128-bit Key Derivation ...........................15
- 4. Deriving MPPE Session Keys from TLS Session Keys ............16
- 4.1. Generating 40-bit Session Keys ............................16
- 4.2. Generating 56-bit Session Keys ............................17
- 4.3. Generating 128-bit Session Keys ...........................17
- 5. Security Considerations .....................................18
- 5.1. MS-CHAP Credentials .......................................18
- 5.2. EAP-TLS Credentials .......................................19
- 6. References ..................................................19
- 7. Acknowledgements ............................................20
- 8. Author's Address ............................................20
- 9. Full Copyright Statement ....................................21
-
-1. Specification of Requirements
-
- In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
- "recommended", "SHOULD", and "SHOULD NOT" are to be interpreted as
- described in [6].
-
-2. Deriving Session Keys from MS-CHAP Credentials
-
- The Microsoft Challenge-Handshake Authentication Protocol (MS-CHAP-1)
- [2] is a Microsoft-proprietary PPP [1] authentication protocol,
- providing the functionality to which LAN-based users are accustomed
- while integrating the encryption and hashing algorithms used on
- Windows networks.
-
-
-
-
-
-Zorn Informational [Page 2]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
- The following sections detail the methods used to derive initial
- session keys (40-, 56- and 128-bit) from MS-CHAP-1 credentials.
-
- Implementation Note
-
- The initial session key in both directions is derived from the
- credentials of the peer that initiated the call and the challenge
- used (if any) is the challenge from the first authentication.
- This is true for both unilateral and bilateral authentication, as
- well as for each link in a multilink bundle. In the multi-chassis
- multilink case, implementations are responsible for ensuring that
- the correct keys are generated on all participating machines.
-
-2.1. Generating 40-bit Session Keys
-
- MPPE uses a derivative of the peer's LAN Manager password as the 40-
- bit session key used for initializing the RC4 encryption tables.
-
- The first step is to obfuscate the peer's password using the
- LmPasswordHash() function (described in [2]). The first 8 octets of
- the result are used as the basis for the session key generated in the
- following way:
-
-/*
-* PasswordHash is the basis for the session key
-* SessionKey is a copy of PasswordHash and is the generative session key
-* 8 is the length (in octets) of the key to be generated.
-*
-*/
-Get_Key(PasswordHash, SessionKey, 8)
-
-/*
-* The effective length of the key is reduced to 40 bits by
-* replacing the first three bytes as follows:
-*/
-SessionKey[0] = 0xd1 ;
-SessionKey[1] = 0x26 ;
-SessionKey[2] = 0x9e ;
-
-2.2. Generating 56-bit Session Keys
-
- MPPE uses a derivative of the peer's LAN Manager password as the 56-
- bit session key used for initializing the RC4 encryption tables.
-
- The first step is to obfuscate the peer's password using the
- LmPasswordHash() function (described in [2]). The first 8 octets of
- the result are used as the basis for the session key generated in the
- following way:
-
-
-
-Zorn Informational [Page 3]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-/*
-* PasswordHash is the basis for the session key
-* SessionKey is a copy of PasswordHash and is the generative session key
-* 8 is the length (in octets) of the key to be generated.
-*
-*/
-Get_Key(PasswordHash, SessionKey, 8)
-
-/*
-* The effective length of the key is reduced to 56 bits by
-* replacing the first byte as follows:
-*/
-SessionKey[0] = 0xd1 ;
-
-2.3. Generating 128-bit Session Keys
-
- MPPE uses a derivative of the peer's Windows NT password as the 128-
- bit session key used for initializing encryption tables.
-
- The first step is to obfuscate the peer's password using
- NtPasswordHash() function as described in [2]. The first 16 octets
- of the result are then hashed again using the MD4 algorithm. The
- first 16 octets of the second hash are used as the basis for the
- session key generated in the following way:
-
-/*
-* Challenge (as described in [9]) is sent by the PPP authenticator
-* during authentication and is 8 octets long.
-* NtPasswordHashHash is the basis for the session key.
-* On return, InitialSessionKey contains the initial session
-* key to be used.
-*/
-Get_Start_Key(Challenge, NtPasswordHashHash, InitialSessionKey)
-
-/*
-* CurrentSessionKey is a copy of InitialSessionKey
-* and is the generative session key.
-* Length (in octets) of the key to generate is 16.
-*
-*/
-Get_Key(InitialSessionKey, CurrentSessionKey, 16)
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 4]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-2.4. Key Derivation Functions
-
- The following procedures are used to derive the session key.
-
-/*
- * Pads used in key derivation
- */
-
-SHApad1[40] =
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-SHApad2[40] =
- {0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
- 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
- 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
- 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2};
-
-/*
- * SHAInit(), SHAUpdate() and SHAFinal() functions are an
- * implementation of Secure Hash Algorithm (SHA-1) [7]. These are
- * available in public domain or can be licensed from
- * RSA Data Security, Inc.
- *
- * 1) InitialSessionKey is 8 octets long for 56- and 40-bit
- * session keys, 16 octets long for 128 bit session keys.
- * 2) CurrentSessionKey is same as InitialSessionKey when this
- * routine is called for the first time for the session.
- */
-
-Get_Key(
-IN InitialSessionKey,
-IN/OUT CurrentSessionKey
-IN LengthOfDesiredKey )
-{
- SHAInit(Context)
- SHAUpdate(Context, InitialSessionKey, LengthOfDesiredKey)
- SHAUpdate(Context, SHAPad1, 40)
- SHAUpdate(Context, CurrentSessionKey, LengthOfDesiredKey)
- SHAUpdate(Context, SHAPad2, 40)
- SHAFinal(Context, Digest)
- memcpy(CurrentSessionKey, Digest, LengthOfDesiredKey)
-}
-
-Get_Start_Key(
-IN Challenge,
-
-
-
-Zorn Informational [Page 5]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-IN NtPasswordHashHash,
-OUT InitialSessionKey)
-{
- SHAInit(Context)
- SHAUpdate(Context, NtPasswordHashHash, 16)
- SHAUpdate(Context, NtPasswordHashHash, 16)
- SHAUpdate(Context, Challenge, 8)
- SHAFinal(Context, Digest)
- memcpy(InitialSessionKey, Digest, 16)
-}
-
-2.5. Sample Key Derivations
-
- The following sections illustrate 40-, 56- and 128-bit key
- derivations. All intermediate values are in hexadecimal.
-
-2.5.1. Sample 40-bit Key Derivation
-
-
- Initial Values
- Password = "clientPass"
-
- Step 1: LmPasswordHash(Password, PasswordHash)
- PasswordHash = 76 a1 52 93 60 96 d7 83 0e 23 90 22 74 04 af d2
-
- Step 2: Copy PasswordHash to SessionKey
- SessionKey = 76 a1 52 93 60 96 d7 83 0e 23 90 22 74 04 af d2
-
- Step 3: GetKey(PasswordHash, SessionKey, 8)
- SessionKey = d8 08 01 53 8c ec 4a 08
-
- Step 4: Reduce the effective key length to 40 bits
- SessionKey = d1 26 9e 53 8c ec 4a 08
-
-2.5.2. Sample 56-bit Key Derivation
-
- Initial Values
- Password = "clientPass"
-
- Step 1: LmPasswordHash(Password, PasswordHash)
- PasswordHash = 76 a1 52 93 60 96 d7 83 0e 23 90 22 74 04 af d2
-
- Step 2: Copy PasswordHash to SessionKey
- SessionKey = 76 a1 52 93 60 96 d7 83 0e 23 90 22 74 04 af d2
-
- Step 3: GetKey(PasswordHash, SessionKey, 8)
- SessionKey = d8 08 01 53 8c ec 4a 08
-
-
-
-
-Zorn Informational [Page 6]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
- Step 4: Reduce the effective key length to 56 bits
- SessionKey = d1 08 01 53 8c ec 4a 08
-
-2.5.3. Sample 128-bit Key Derivation
-
-Initial Values
- Password = "clientPass"
- Challenge = 10 2d b5 df 08 5d 30 41
-
-Step 1: NtPasswordHash(Password, PasswordHash)
- PasswordHash = 44 eb ba 8d 53 12 b8 d6 11 47 44 11 f5 69 89 ae
-
-Step 2: PasswordHashHash = MD4(PasswordHash)
- PasswordHashHash = 41 c0 0c 58 4b d2 d9 1c 40 17 a2 a1 2f a5 9f 3f
-
-Step 3: GetStartKey(Challenge, PasswordHashHash, InitialSessionKey)
- InitialSessionKey = a8 94 78 50 cf c0 ac ca d1 78 9f b6 2d dc dd b0
-
-Step 4: Copy InitialSessionKey to CurrentSessionKey
- CurrentSessionKey = a8 94 78 50 cf c0 ac c1 d1 78 9f b6 2d dc dd b0
-
-Step 5: GetKey(InitialSessionKey, CurrentSessionKey, 16)
- CurrentSessionKey = 59 d1 59 bc 09 f7 6f 1d a2 a8 6a 28 ff ec 0b 1e
-
-3. Deriving Session Keys from MS-CHAP-2 Credentials
-
- Version 2 of the Microsoft Challenge-Handshake Authentication
- Protocol (MS-CHAP-2) [8] is a Microsoft-proprietary PPP
- authentication protocol, providing the functionality to which LAN-
- based users are accustomed while integrating the encryption and
- hashing algorithms used on Windows networks.
-
- The following sections detail the methods used to derive initial
- session keys from MS-CHAP-2 credentials. 40-, 56- and 128-bit keys
- are all derived using the same algorithm from the authenticating
- peer's Windows NT password. The only difference is in the length of
- the keys and their effective strength: 40- and 56-bit keys are 8
- octets in length, while 128-bit keys are 16 octets long. Separate
- keys are derived for the send and receive directions of the session.
-
- Implementation Note
-
- The initial session keys in both directions are derived from the
- credentials of the peer that initiated the call and the challenges
- used are those from the first authentication. This is true as
- well for each link in a multilink bundle. In the multi-chassis
- multilink case, implementations are responsible for ensuring that
- the correct keys are generated on all participating machines.
-
-
-
-Zorn Informational [Page 7]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-3.1. Generating 40-bit Session Keys
-
- When used in conjunction with MS-CHAP-2 authentication, the initial
- MPPE session keys are derived from the peer's Windows NT password.
-
- The first step is to obfuscate the peer's password using
- NtPasswordHash() function as described in [8].
-
- NtPasswordHash(Password, PasswordHash)
-
- The first 16 octets of the result are then hashed again using the MD4
- algorithm.
-
- PasswordHashHash = md4(PasswordHash)
-
- The first 16 octets of this second hash are used together with the
- NT- Response field from the MS-CHAP-2 Response packet [8] as the
- basis for the master session key:
-
- GetMasterKey(PasswordHashHash, NtResponse, MasterKey)
-
- Once the master key has been generated, it is used to derive two 40-
- bit session keys, one for sending and one for receiving:
-
- GetAsymmetricStartKey(MasterKey, MasterSendKey, 8, TRUE, TRUE)
- GetAsymmetricStartKey(MasterKey, MasterReceiveKey, 8, FALSE, TRUE)
-
- The master session keys are never used to encrypt or decrypt data;
- they are only used in the derivation of transient session keys. The
- initial transient session keys are obtained by calling the function
- GetNewKeyFromSHA() (described in [3]):
-
-GetNewKeyFromSHA(MasterSendKey, MasterSendKey, 8, SendSessionKey)
-GetNewKeyFromSHA(MasterReceiveKey, MasterReceiveKey, 8,
- ReceiveSessionKey)
-
- Next, the effective strength of both keys is reduced by setting the
- first three octets to known constants:
-
- SendSessionKey[0] = ReceiveSessionKey[0] = 0xd1
- SendSessionKey[1] = ReceiveSessionKey[1] = 0x26
- SendSessionKey[2] = ReceiveSessionKey[2] = 0x9e
-
- Finally, the RC4 tables are initialized using the new session keys:
-
- rc4_key(SendRC4key, 8, SendSessionKey)
- rc4_key(ReceiveRC4key, 8, ReceiveSessionKey)
-
-
-
-
-Zorn Informational [Page 8]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-3.2. Generating 56-bit Session Keys
-
- When used in conjunction with MS-CHAP-2 authentication, the initial
- MPPE session keys are derived from the peer's Windows NT password.
-
- The first step is to obfuscate the peer's password using
- NtPasswordHash() function as described in [8].
-
- NtPasswordHash(Password, PasswordHash)
-
- The first 16 octets of the result are then hashed again using the MD4
- algorithm.
-
- PasswordHashHash = md4(PasswordHash)
-
- The first 16 octets of this second hash are used together with the
- NT-Response field from the MS-CHAP-2 Response packet [8] as the basis
- for the master session key:
-
- GetMasterKey(PasswordHashHash, NtResponse, MasterKey)
-
- Once the master key has been generated, it is used to derive two
- 56-bit session keys, one for sending and one for receiving:
-
- GetAsymmetricStartKey(MasterKey, MasterSendKey, 8, TRUE, TRUE)
- GetAsymmetricStartKey(MasterKey, MasterReceiveKey, 8, FALSE, TRUE)
-
- The master session keys are never used to encrypt or decrypt data;
- they are only used in the derivation of transient session keys. The
- initial transient session keys are obtained by calling the function
- GetNewKeyFromSHA() (described in [3]):
-
-GetNewKeyFromSHA(MasterSendKey, MasterSendKey, 8, SendSessionKey)
-GetNewKeyFromSHA(MasterReceiveKey, MasterReceiveKey, 8,
- ReceiveSessionKey)
-
- Next, the effective strength of both keys is reduced by setting the
- first octet to a known constant:
-
- SendSessionKey[0] = ReceiveSessionKey[0] = 0xd1
-
- Finally, the RC4 tables are initialized using the new session keys:
-
- rc4_key(SendRC4key, 8, SendSessionKey)
- rc4_key(ReceiveRC4key, 8, ReceiveSessionKey)
-
-
-
-
-
-
-Zorn Informational [Page 9]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-3.3. Generating 128-bit Session Keys
-
- When used in conjunction with MS-CHAP-2 authentication, the initial
- MPPE session keys are derived from the peer's Windows NT password.
-
- The first step is to obfuscate the peer's password using
- NtPasswordHash() function as described in [8].
-
- NtPasswordHash(Password, PasswordHash)
-
- The first 16 octets of the result are then hashed again using the MD4
- algorithm.
-
- PasswordHashHash = md4(PasswordHash)
-
- The first 16 octets of this second hash are used together with the
- NT-Response field from the MS-CHAP-2 Response packet [8] as the basis
- for the master session key:
-
- GetMasterKey(PasswordHashHash, NtResponse, MasterKey)
-
- Once the master key has been generated, it is used to derive two
- 128-bit master session keys, one for sending and one for receiving:
-
-GetAsymmetricStartKey(MasterKey, MasterSendKey, 16, TRUE, TRUE)
-GetAsymmetricStartKey(MasterKey, MasterReceiveKey, 16, FALSE, TRUE)
-
- The master session keys are never used to encrypt or decrypt data;
- they are only used in the derivation of transient session keys. The
- initial transient session keys are obtained by calling the function
- GetNewKeyFromSHA() (described in [3]):
-
-GetNewKeyFromSHA(MasterSendKey, MasterSendKey, 16, SendSessionKey)
-GetNewKeyFromSHA(MasterReceiveKey, MasterReceiveKey, 16,
- ReceiveSessionKey)
-
- Finally, the RC4 tables are initialized using the new session keys:
-
- rc4_key(SendRC4key, 16, SendSessionKey)
- rc4_key(ReceiveRC4key, 16, ReceiveSessionKey)
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 10]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-3.4. Key Derivation Functions
-
- The following procedures are used to derive the session key.
-
-/*
- * Pads used in key derivation
- */
-
-SHSpad1[40] =
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-SHSpad2[40] =
- {0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
- 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
- 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
- 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2};
-
-/*
- * "Magic" constants used in key derivations
- */
-
-Magic1[27] =
- {0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74,
- 0x68, 0x65, 0x20, 0x4d, 0x50, 0x50, 0x45, 0x20, 0x4d,
- 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x4b, 0x65, 0x79};
-
-Magic2[84] =
- {0x4f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x20, 0x73, 0x69, 0x64, 0x65, 0x2c, 0x20,
- 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68,
- 0x65, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x20, 0x6b, 0x65, 0x79,
- 0x3b, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x69, 0x64, 0x65,
- 0x2c, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68,
- 0x65, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20,
- 0x6b, 0x65, 0x79, 0x2e};
-
-Magic3[84] =
- {0x4f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x20, 0x73, 0x69, 0x64, 0x65, 0x2c, 0x20,
- 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68,
- 0x65, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20,
- 0x6b, 0x65, 0x79, 0x3b, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68,
- 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73,
- 0x69, 0x64, 0x65, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73,
-
-
-
-Zorn Informational [Page 11]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
- 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x20,
- 0x6b, 0x65, 0x79, 0x2e};
-
-
- GetMasterKey(
- IN 16-octet PasswordHashHash,
- IN 24-octet NTResponse,
- OUT 16-octet MasterKey )
- {
- 20-octet Digest
-
- ZeroMemory(Digest, sizeof(Digest));
-
- /*
- * SHSInit(), SHSUpdate() and SHSFinal()
- * are an implementation of the Secure Hash Standard [7].
- */
-
- SHSInit(Context);
- SHSUpdate(Context, PasswordHashHash, 16);
- SHSUpdate(Context, NTResponse, 24);
- SHSUpdate(Context, Magic1, 27);
- SHSFinal(Context, Digest);
-
- MoveMemory(MasterKey, Digest, 16);
- }
-
- VOID
- GetAsymetricStartKey(
- IN 16-octet MasterKey,
- OUT 8-to-16 octet SessionKey,
- IN INTEGER SessionKeyLength,
- IN BOOLEAN IsSend,
- IN BOOLEAN IsServer )
- {
-
- 20-octet Digest;
-
- ZeroMemory(Digest, 20);
-
- if (IsSend) {
- if (IsServer) {
- s = Magic3
- } else {
- s = Magic2
- }
- } else {
- if (IsServer) {
-
-
-
-Zorn Informational [Page 12]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
- s = Magic2
- } else {
- s = Magic3
- }
- }
-
- /*
- * SHSInit(), SHSUpdate() and SHSFinal()
- * are an implementation of the Secure Hash Standard [7].
- */
-
- SHSInit(Context);
- SHSUpdate(Context, MasterKey, 16);
- SHSUpdate(Context, SHSpad1, 40);
- SHSUpdate(Context, s, 84);
- SHSUpdate(Context, SHSpad2, 40);
- SHSFinal(Context, Digest);
-
- MoveMemory(SessionKey, Digest, SessionKeyLength);
- }
-
-3.5. Sample Key Derivations
-
- The following sections illustrate 40-, 56- and 128-bit key
- derivations. All intermediate values are in hexadecimal.
-
-3.5.1. Sample 40-bit Key Derivation
-
-Initial Values
- UserName = "User"
- = 55 73 65 72
-
- Password = "clientPass"
- = 63 00 6C 00 69 00 65 00 6E 00
- 74 00 50 00 61 00 73 00 73 00
-
- AuthenticatorChallenge = 5B 5D 7C 7D 7B 3F 2F 3E 3C 2C
- 60 21 32 26 26 28
- PeerChallenge = 21 40 23 24 25 5E 26 2A 28 29 5F 2B 3A 33 7C 7E
-
- Challenge = D0 2E 43 86 BC E9 12 26
-
- NT-Response =
- 82 30 9E CD 8D 70 8B 5E A0 8F AA 39 81 CD 83 54 42 33
- 11 4A 3D 85 D6 DF
-
-Step 1: NtPasswordHash(Password, PasswordHash)
- PasswordHash = 44 EB BA 8D 53 12 B8 D6 11 47 44 11 F5 69 89 AE
-
-
-
-Zorn Informational [Page 13]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-Step 2: PasswordHashHash = MD4(PasswordHash)
- PasswordHashHash = 41 C0 0C 58 4B D2 D9 1C 40 17 A2 A1 2F A5 9F 3F
-
-Step 3: Derive the master key (GetMasterKey())
- MasterKey = FD EC E3 71 7A 8C 83 8C B3 88 E5 27 AE 3C DD 31
-
-Step 4: Derive the master send session key (GetAsymmetricStartKey())
- SendStartKey40 = 8B 7C DC 14 9B 99 3A 1B
-
-Step 5: Derive the initial send session key (GetNewKeyFromSHA())
- SendSessionKey40 = D1 26 9E C4 9F A6 2E 3E
-
-Sample Encrypted Message
- rc4(SendSessionKey40, "test message") = 92 91 37 91 7E 58 03 D6
- 68 D7 58 98
-
-3.5.2. Sample 56-bit Key Derivation
-
-Initial Values
- UserName = "User"
- = 55 73 65 72
-
- Password = "clientPass"
- = 63 00 6C 00 69 00 65 00 6E 00 74 00 50
- 00 61 00 73 00 73 00
-
- AuthenticatorChallenge = 5B 5D 7C 7D 7B 3F 2F 3E 3C 2C
- 60 21 32 26 26 28
- PeerChallenge = 21 40 23 24 25 5E 26 2A 28 29 5F 2B 3A 33 7C 7E
-
- Challenge = D0 2E 43 86 BC E9 12 26
-
- NT-Response =
- 82 30 9E CD 8D 70 8B 5E A0 8F AA 39 81 CD 83 54 42 33
- 11 4A 3D 85 D6 DF
-
-Step 1: NtPasswordHash(Password, PasswordHash)
- PasswordHash = 44 EB BA 8D 53 12 B8 D6 11 47 44 11 F5 69 89 AE
-
-Step 2: PasswordHashHash = MD4(PasswordHash)
- PasswordHashHash = 41 C0 0C 58 4B D2 D9 1C 40 17 A2 A1 2F A5 9F 3F
-
-Step 3: Derive the master key (GetMasterKey())
- MasterKey = FD EC E3 71 7A 8C 83 8C B3 88 E5 27 AE 3C DD 31
-
-Step 4: Derive the master send session key (GetAsymmetricStartKey())
- SendStartKey56 = 8B 7C DC 14 9B 99 3A 1B
-
-
-
-
-Zorn Informational [Page 14]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-Step 5: Derive the initial send session key (GetNewKeyFromSHA())
- SendSessionKey56 = D1 5C 00 C4 9F A6 2E 3E
-
-Sample Encrypted Message
- rc4(SendSessionKey40, "test message") = 3F 10 68 33 FA 44 8D
- A8 42 BC 57 58
-
-3.5.3. Sample 128-bit Key Derivation
-
-Initial Values
- UserName = "User"
- = 55 73 65 72
-
- Password = "clientPass"
- = 63 00 6C 00 69 00 65 00 6E 00
- 74 00 50 00 61 00 73 00 73 00
-
- AuthenticatorChallenge = 5B 5D 7C 7D 7B 3F 2F 3E 3C 2C
- 60 21 32 26 26 28
-
- PeerChallenge = 21 40 23 24 25 5E 26 2A 28 29 5F 2B 3A 33 7C 7E
-
- Challenge = D0 2E 43 86 BC E9 12 26
-
- NT-Response =
- 82 30 9E CD 8D 70 8B 5E A0 8F AA 39 81 CD 83 54 42 33
- 11 4A 3D 85 D6 DF
-
-Step 1: NtPasswordHash(Password, PasswordHash)
- PasswordHash = 44 EB BA 8D 53 12 B8 D6 11 47 44 11 F5 69 89 AE
-
-Step 2: PasswordHashHash = MD4(PasswordHash)
- PasswordHashHash = 41 C0 0C 58 4B D2 D9 1C 40 17 A2 A1 2F A5 9F 3F
-
-Step 2: Derive the master key (GetMasterKey())
- MasterKey = FD EC E3 71 7A 8C 83 8C B3 88 E5 27 AE 3C DD 31
-
-Step 3: Derive the send master session key (GetAsymmetricStartKey())
-
- SendStartKey128 = 8B 7C DC 14 9B 99 3A 1B A1 18 CB 15 3F 56 DC CB
-
-Step 4: Derive the initial send session key (GetNewKeyFromSHA())
- SendSessionKey128 = 40 5C B2 24 7A 79 56 E6 E2 11 00 7A E2 7B 22 D4
-
-Sample Encrypted Message
- rc4(SendSessionKey128, "test message") = 81 84 83 17 DF 68
- 84 62 72 FB 5A BE
-
-
-
-
-Zorn Informational [Page 15]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-4. Deriving MPPE Session Keys from TLS Session Keys
-
- The Extensible Authentication Protocol (EAP) [10] is a PPP extension
- that provides support for additional authentication methods within
- PPP. Transport Level Security (TLS) [11] provides for mutual
- authentication, integrity-protected ciphersuite negotiation and key
- exchange between two endpoints. EAP-TLS [12] is an EAP
- authentication type which allows the use of TLS within the PPP
- authentication framework. The following sections describe the
- methods used to derive initial session keys from TLS session keys.
- 56-, 40- and 128-bit keys are derived using the same algorithm. The
- only difference is in the length of the keys and their effective
- strength: 56- and 40-bit keys are 8 octets in length, while 128-bit
- keys are 16 octets long. Separate keys are derived for the send and
- receive directions of the session.
-
-4.1. Generating 40-bit Session Keys
-
- When MPPE is used in conjunction with EAP-TLS authentication, the TLS
- master secret is used as the master session key.
-
- The algorithm used to derive asymmetrical master session keys from
- the TLS master secret is described in [12]. The master session keys
- are never used to encrypt or decrypt data; they are only used in the
- derivation of transient session keys.
-
- Implementation Note
-
- If the asymmetrical master keys are less than 8 octets in length,
- they MUST be padded on the left with zeroes before being used to
- derive the initial transient session keys. Conversely, if the
- asymmetrical master keys are more than 8 octets in length, they
- must be truncated to 8 octets before being used to derive the
- initial transient session keys.
-
- The initial transient session keys are obtained by calling the
- function GetNewKeyFromSHA() (described in [3]):
-
-GetNewKeyFromSHA(MasterSendKey, MasterSendKey, 8, SendSessionKey)
-GetNewKeyFromSHA(MasterReceiveKey, MasterReceiveKey, 8,
-ReceiveSessionKey)
-
- Next, the effective strength of both keys is reduced by setting the
- first three octets to known constants:
-
- SendSessionKey[0] = ReceiveSessionKey[0] = 0xD1
- SendSessionKey[1] = ReceiveSessionKey[1] = 0x26
- SendSessionKey[2] = ReceiveSessionKey[2] = 0x9E
-
-
-
-Zorn Informational [Page 16]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
- Finally, the RC4 tables are initialized using the new session keys:
-
- rc4_key(SendRC4key, 8, SendSessionKey)
- rc4_key(ReceiveRC4key, 8, ReceiveSessionKey)
-
-4.2. Generating 56-bit Session Keys
-
- When MPPE is used in conjunction with EAP-TLS authentication, the TLS
- master secret is used as the master session key.
-
- The algorithm used to derive asymmetrical master session keys from
- the TLS master secret is described in [12]. The master session keys
- are never used to encrypt or decrypt data; they are only used in the
- derivation of transient session keys.
-
- Implementation Note
-
- If the asymmetrical master keys are less than 8 octets in length,
- they MUST be padded on the left with zeroes before being used to
- derive the initial transient session keys. Conversely, if the
- asymmetrical master keys are more than 8 octets in length, they
- must be truncated to 8 octets before being used to derive the
- initial transient session keys.
-
- The initial transient session keys are obtained by calling the
- function GetNewKeyFromSHA() (described in [3]):
-
-GetNewKeyFromSHA(MasterSendKey, MasterSendKey, 8, SendSessionKey)
-GetNewKeyFromSHA(MasterReceiveKey, MasterReceiveKey, 8,
-ReceiveSessionKey)
-
- Next, the effective strength of both keys is reduced by setting the
- initial octet to a known constant:
-
- SendSessionKey[0] = ReceiveSessionKey[0] = 0xD1
-
- Finally, the RC4 tables are initialized using the new session keys:
-
- rc4_key(SendRC4key, 8, SendSessionKey)
- rc4_key(ReceiveRC4key, 8, ReceiveSessionKey)
-
-4.3. Generating 128-bit Session Keys
-
- When MPPE is used in conjunction with EAP-TLS authentication, the TLS
- master secret is used as the master session key.
-
-
-
-
-
-
-Zorn Informational [Page 17]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
- The algorithm used to derive asymmetrical master session keys from
- the TLS master secret is described in [12]. Note that the send key
- on one side is the receive key on the other.
-
- The master session keys are never used to encrypt or decrypt data;
- they are only used in the derivation of transient session keys.
-
- Implementation Note
-
- If the asymmetrical master keys are less than 16 octets in length,
- they MUST be padded on the left with zeroes before being used to
- derive the initial transient session keys. Conversely, if the
- asymmetrical master keys are more than 16 octets in length, they
- must be truncated to 16 octets before being used to derive the
- initial transient session keys.
-
- The initial transient session keys are obtained by calling the
- function GetNewKeyFromSHA() (described in [3]):
-
-GetNewKeyFromSHA(MasterSendKey, MasterSendKey, 16, SendSessionKey)
-GetNewKeyFromSHA(MasterReceiveKey, MasterReceiveKey, 16,
-ReceiveSessionKey)
-
- Finally, the RC4 tables are initialized using the new session keys:
-
- rc4_key(SendRC4key, 16, SendSessionKey)
- rc4_key(ReceiveRC4key, 16, ReceiveSessionKey)
-
-5. Security Considerations
-
-5.1. MS-CHAP Credentials
-
- Because of the way in which 40-bit keys are derived from MS-CHAP-1
- credentials, the initial 40-bit session key will be identical in all
- sessions established under the same peer credentials. For this
- reason, and because RC4 with a 40-bit key length is believed to be a
- relatively weak cipher, peers SHOULD NOT use 40-bit keys derived from
- the LAN Manager password hash (as described above) if it can be
- avoided.
-
- Since the MPPE session keys are derived from user passwords (in the
- MS- CHAP-1 and MS-CHAP-2 cases), care should be taken to ensure the
- selection of strong passwords and passwords should be changed
- frequently.
-
-
-
-
-
-
-
-Zorn Informational [Page 18]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-5.2. EAP-TLS Credentials
-
- The strength of the session keys is dependent upon the security of
- the TLS protocol.
-
- The EAP server may be on a separate machine from the PPP
- authenticator; if this is the case, adequate care must be taken in
- the transmission of the EAP-TLS master keys to the authenticator.
-
-6. References
-
- [1] Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51, RFC
- 1661, July 1994.
-
- [2] Zorn, G. and S. Cobb, "Microsoft PPP CHAP Extensions", RFC 2433,
- October 1998.
-
- [3] Pall, G. and G. Zorn, "Microsoft Point-to-Point Encryption
- (MPPE) RFC 3078, March 2001.
-
- [4] RC4 is a proprietary encryption algorithm available under
- license from RSA Data Security Inc. For licensing information,
- contact:
- RSA Data Security, Inc.
- 100 Marine Parkway
- Redwood City, CA 94065-1031
-
- [5] Pall, G., "Microsoft Point-to-Point Compression (MPPC)
- Protocol", RFC 2118, March 1997.
-
- [6] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
- [7] "Secure Hash Standard", Federal Information Processing Standards
- Publication 180-1, National Institute of Standards and
- Technology, April 1995.
-
- [8] Zorn, G., "Microsoft PPP CHAP Extensions, Version 2", RFC 2759,
- January 2000.
-
- [9] Simpson, W., "PPP Challenge Handshake Authentication Protocol
- (CHAP)", RFC 1994, August 1996.
-
- [10] Blunk, L. and J. Vollbrecht, "PPP Extensible Authentication
- Protocol (EAP)", RFC 2284, March 1998.
-
-
-
-
-
-
-Zorn Informational [Page 19]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
- [11] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC
- 2246, January 1999.
-
- [12] Aboba, B. and D. Simon, "PPP EAP TLS Authentication Protocol",
- RFC 2716, October 1999.
-
-7. Acknowledgements
-
- Anthony Bell, Richard B. Ward, Terence Spies and Thomas Dimitri, all
- of Microsoft Corporation, significantly contributed to the design and
- development of MPPE.
-
- Additional thanks to Robert Friend, Joe Davies, Jody Terrill, Archie
- Cobbs, Mark Deuser, Vijay Baliga, Brad Robel-Forrest and Jeff Haag
- for useful feedback.
-
- The technical portions of this memo were completed while the author
- was employed by Microsoft Corporation.
-
-8. Author's Address
-
- Questions about this memo can also be directed to:
-
- Glen Zorn
- cisco Systems
- 500 108th Avenue N.E.
- Suite 500
- Bellevue, Washington 98004
- USA
-
- Phone: +1 425 438 8218
- FAX: +1 425 438 1848
- EMail: gwz@cisco.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 20]
-
-RFC 3079 MPPE Key Derivation March 2001
-
-
-9. Full Copyright Statement
-
- Copyright (C) The Internet Society (2001). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Zorn Informational [Page 21]
-
diff --git a/doc/rfc3544.txt b/doc/rfc3544.txt
deleted file mode 100644
index b4d2ac5..0000000
--- a/doc/rfc3544.txt
+++ /dev/null
@@ -1,787 +0,0 @@
-
-
-
-
-
-
-Network Working Group T. Koren
-Request for Comments: 3544 Cisco Systems
-Obsoletes: 2509 S. Casner
-Category: Standards Track Packet Design
- C. Bormann
- Universitaet Bremen TZI
- July 2003
-
-
- IP Header Compression over PPP
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2003). All Rights Reserved.
-
-Abstract
-
- This document describes an option for negotiating the use of header
- compression on IP datagrams transmitted over the Point-to-Point
- Protocol (RFC 1661). It defines extensions to the PPP Control
- Protocols for IPv4 and IPv6 (RFC 1332, RFC 2472). Header compression
- may be applied to IPv4 and IPv6 datagrams in combination with TCP,
- UDP and RTP transport protocols as specified in RFC 2507, RFC 2508
- and RFC 3545.
-
-1. Introduction
-
- The IP Header Compression (IPHC) defined in [RFC2507] may be used for
- compression of both IPv4 and IPv6 datagrams or packets encapsulated
- with multiple IP headers. IPHC is also capable of compressing both
- TCP and UDP transport protocol headers. The IP/UDP/RTP header
- compression defined in [RFC2508] and [RFC3545] fits within the
- framework defined by IPHC so that it may also be applied to both IPv4
- and IPv6 packets.
-
-
-
-
-
-
-
-
-
-Koren, et al. Standards Track [Page 1]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- In order to establish compression of IP datagrams sent over a PPP
- link each end of the link must agree on a set of configuration
- parameters for the compression. The process of negotiating link
- parameters for network layer protocols is handled in PPP by a family
- of network control protocols (NCPs). Since there are separate NCPs
- for IPv4 and IPv6, this document defines configuration options to be
- used in both NCPs to negotiate parameters for the compression scheme.
-
- This document obsoletes RFC 2509, adding two new suboptions to the IP
- header compression configuration option. One suboption negotiates
- usage of Enhanced RTP-Compression (specified in [RFC3545]), and the
- other suboption negotiates header compression for only TCP or only
- non-TCP packets.
-
- IPHC relies on the link layer's ability to indicate the types of
- datagrams carried in the link layer frames. In this document nine
- new types for the PPP Data Link Layer Protocol Field are defined
- along with their meaning.
-
- In general, header compression schemes that use delta encoding of
- compressed packets require that the lower layer does not reorder
- packets between compressor and decompressor. IPHC uses delta
- encoding of compressed packets for TCP and RTP. The IPHC
- specification [RFC2507] includes methods that allow link layers that
- may reorder packets to be used with IPHC. Since PPP does not reorder
- packets these mechanisms are disabled by default. When using
- reordering mechanisms such as multiclass multilink PPP [RFC2686],
- care must be taken so that packets that share the same compression
- context are not reordered.
-
-2. Configuration Option
-
- This document specifies a new compression protocol value for the IPCP
- IP-Compression-Protocol option as specified in [RFC1332]. The new
- value and the associated option format are described in section 2.1.
-
- The option format is structured to allow future extensions to the
- IPHC scheme.
-
- NOTE: The specification of link and network layer parameter
- negotiation for PPP [RFC1661], [RFC1331], [RFC1332] does not
- prohibit multiple instances of one configuration option but states
- that the specification of a configuration option must explicitly
- allow multiple instances. [RFC3241] updates RFC 1332 by
- explicitly allowing the sending of multiple instances of the IP-
- Compression-Protocol configuration option, each with a different
- value for IP-Compression-Protocol. Each type of compression
- protocol may independently establish its own parameters.
-
-
-
-Koren, et al. Standards Track [Page 2]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- NOTE: [RFC1332] is not explicit about whether the option
- negotiates the capabilities of the receiver or of the sender. In
- keeping with current practice, we assume that the option describes
- the capabilities of the decompressor (receiving side) of the peer
- that sends the Config-Req.
-
-2.1. Configuration Option Format
-
- Both the network control protocol for IPv4, IPCP [RFC1332] and the
- IPv6 NCP, IPV6CP [RFC2472] may be used to negotiate IP Header
- Compression parameters for their respective protocols. The format of
- the configuration option is the same for both IPCP and IPV6CP.
-
- Description
-
- This NCP configuration option is used to negotiate parameters for
- IP Header Compression. Successful negotiation of parameters
- enables the use of Protocol Identifiers FULL_HEADER,
- COMPRESSED_TCP, COMPRESSED_TCP_NODELTA, COMPRESSED_NON_TCP and
- CONTEXT_STATE as specified in [RFC2507]. The option format is
- summarized below. The fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | IP-Compression-Protocol |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | TCP_SPACE | NON_TCP_SPACE |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | F_MAX_PERIOD | F_MAX_TIME |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | MAX_HEADER | suboptions...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
- 2
-
- Length
- >= 14
-
- The length may be increased if the presence of additional
- parameters is indicated by additional suboptions.
-
- IP-Compression-Protocol
- 0061 (hex)
-
-
-
-
-
-
-Koren, et al. Standards Track [Page 3]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- TCP_SPACE
- The TCP_SPACE field is two octets and indicates the maximum value
- of a context identifier in the space of context identifiers
- allocated for TCP.
-
- Suggested value: 15
-
- TCP_SPACE must be at least 0 and at most 255 (the value 0 implies
- having one context).
-
- NON_TCP_SPACE
- The NON_TCP_SPACE field is two octets and indicates the maximum
- value of a context identifier in the space of context identifiers
- allocated for non-TCP. These context identifiers are carried in
- COMPRESSED_NON_TCP, COMPRESSED_UDP and COMPRESSED_RTP packet
- headers.
-
- Suggested value: 15
-
- NON_TCP_SPACE must be at least 0 and at most 65535 (the value 0
- implies having one context).
-
- F_MAX_PERIOD
- Maximum interval between full headers. No more than F_MAX_PERIOD
- COMPRESSED_NON_TCP headers may be sent between FULL_HEADER
- headers.
-
- Suggested value: 256
-
- A value of zero implies infinity, i.e. there is no limit to the
- number of consecutive COMPRESSED_NON_TCP headers.
-
- F_MAX_TIME
- Maximum time interval between full headers. COMPRESSED_NON_TCP
- headers may not be sent more than F_MAX_TIME seconds after sending
- the last FULL_HEADER header.
-
- Suggested value: 5 seconds
-
- A value of zero implies infinity.
-
- MAX_HEADER
- The largest header size in octets that may be compressed.
-
- Suggested value: 168 octets
-
-
-
-
-
-
-Koren, et al. Standards Track [Page 4]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- The value of MAX_HEADER should be large enough so that at least
- the outer network layer header can be compressed. To increase
- compression efficiency MAX_HEADER should be set to a value large
- enough to cover common combinations of network and transport layer
- headers.
-
- suboptions
- The suboptions field consists of zero or more suboptions. Each
- suboption consists of a type field, a length field and zero or
- more parameter octets, as defined by the suboption type. The
- value of the length field indicates the length of the suboption in
- its entirety, including the lengths of the type and length fields.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Parameters...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-2.2. RTP-Compression Suboption
-
- The RTP-Compression suboption is included in the NCP IP-Compression-
- Protocol option for IPHC if IP/UDP/RTP compression is to be enabled.
-
- Inclusion of the RTP-Compression suboption enables use of additional
- Protocol Identifiers COMPRESSED_RTP and COMPRESSED_UDP along with
- additional forms of CONTEXT_STATE as specified in [RFC2508].
-
- Description
-
- Enable use of Protocol Identifiers COMPRESSED_RTP, COMPRESSED_UDP
- and CONTEXT_STATE as specified in [RFC2508].
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
- 1
-
- Length
- 2
-
-
-
-
-
-
-
-Koren, et al. Standards Track [Page 5]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
-2.3. Enhanced RTP-Compression Suboption
-
- To use the enhanced RTP header compression defined in [RFC3545], a
- new sub-option 2 is added. Sub-option 2 is negotiated instead of,
- not in addition to, sub-option 1.
-
- Description
-
- Enable use of Protocol Identifiers COMPRESSED_RTP and
- CONTEXT_STATE as specified in [RFC2508]. In addition, enable use
- of [RFC3545] compliant compression including the use of Protocol
- Identifier COMPRESSED_UDP with additional flags and use of the C
- flag with the FULL_HEADER Protocol Identifier to indicate use of
- HDRCKSUM with COMPRESSED_RTP and COMPRESSED_UDP packets.
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
- 2
-
- Length
- 2
-
-2.4. Negotiating header compression for only TCP or only non-TCP
- packets
-
- In RFC 2509 it was not possible to negotiate only TCP header
- compression or only non-TCP header compression because a value of 0
- in the TCP_SPACE or the NON_TCP_SPACE fields actually means that 1
- context is negotiated.
-
- A new suboption 3 is added to allow specifying that the number of
- contexts for TCP_SPACE or NON_TCP_SPACE is zero, disabling use of the
- corresponding compression.
-
-
-
-
-
-
-
-
-
-
-
-
-
-Koren, et al. Standards Track [Page 6]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- Description
-
- Enable header compression for only TCP or only non-TCP packets.
-
- 0 1 2
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Parameter |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
- 3
-
- Length
- 3
-
- Parameter
-
- The parameter is 1 byte with one of the following values:
-
- 1 = the number of contexts for TCP_SPACE is 0
- 2 = the number of contexts for NON_TCP_SPACE is 0
-
- This suboption overrides the values that were previously assigned to
- TCP_SPACE and NON_TCP_SPACE in the IP Header Compression option.
-
- If suboption 3 is included multiple times with parameter 1 and 2,
- compression is disabled for all packets.
-
-3. Multiple Network Control Protocols
-
- The IPHC protocol is able to compress both IPv6 and IPv4 datagrams.
- Both IPCP and IPV6CP are able to negotiate option parameter values
- for IPHC. These values apply to the compression of packets where the
- outer header is an IPv4 header and an IPv6 header, respectively.
-
-3.1. Sharing Context Identifier Space
-
- For the compression and decompression of IPv4 and IPv6 datagram
- headers the context identifier space is shared. While the parameter
- values are independently negotiated, sharing the context identifier
- spaces becomes more complex when the parameter values differ. Since
- the compressed packets share context identifier space, the
- compression engine must allocate context identifiers out of a common
- pool; for compressed packets, the decompressor has to examine the
- context state to determine what parameters to use for decompression.
-
-
-
-
-
-Koren, et al. Standards Track [Page 7]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- Context identifier spaces are not shared between TCP and non-
- TCP/UDP/RTP. Doing so would require additional mechanisms to ensure
- that no error can occur when switching from using a context
- identifier for TCP to non-TCP.
-
-4. Demultiplexing of Datagrams
-
- The IPHC specification [RFC2507] defines four header formats for
- different types of compressed headers. They are compressed TCP,
- compressed TCP with no delta encoding, compressed non-TCP with 8 bit
- CID and compressed non-TCP with 16 bit CID. The two non-TCP formats
- may be distinguished by their contents so both may use the same
- link-level identifier. A fifth header format, the full header is
- distinct from a regular header in that it carries additional
- information to establish shared context between the compressor and
- decompressor.
-
- The specification of IP/UDP/RTP Header Compression [RFC2508] defines
- four additional formats of compressed headers. They are for
- compressed UDP and compressed RTP (on top of UDP), both with either
- 8- or 16-bit CIDs. In addition, there is an explicit error message
- from the decompressor to the compressor.
-
- The link layer must be able to indicate these header formats with
- distinct values. Nine PPP Data Link Layer Protocol Field values are
- specified below.
-
- FULL_HEADER
- The frame contains a full header as specified in [RFC2508] Section
- 3.3.1. This is the same as the FULL_HEADER specified in [RFC2507]
- Section 5.3.
- Value: 0061 (hex)
-
- COMPRESSED_TCP
- The frame contains a datagram with a compressed header with the
- format as specified in [RFC2507] Section 6a.
- Value: 0063 (hex)
-
- COMPRESSED_TCP_NODELTA
- The frame contains a datagram with a compressed header with the
- format as specified in [RFC2507] Section 6b.
- Value: 2063 (hex)
-
- COMPRESSED_NON_TCP
- The frame contains a datagram with a compressed header with the
- format as specified in either Section 6c or Section 6d of
- [RFC2507].
- Value: 0065 (hex)
-
-
-
-Koren, et al. Standards Track [Page 8]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- COMPRESSED_RTP_8
- The frame contains a datagram with a compressed header with the
- format as specified in [RFC2508] Section 3.3.2, using 8-bit CIDs.
- Value: 0069 (hex)
-
- COMPRESSED_RTP_16
- The frame contains a datagram with a compressed header with the
- format as specified in [RFC2508] Section 3.3.2, using 16-bit CIDs.
- Value: 2069 (hex)
-
- COMPRESSED_UDP_8
- The frame contains a datagram with a compressed header with the
- format as specified in [RFC2508] Section 3.3.3 or as specified in
- [RFC3545] Section 2.1, using 8-bit CIDs.
- Value: 0067 (hex)
-
- COMPRESSED_UDP_16
- The frame contains a datagram with a compressed header with the
- format as specified in [RFC2508] Section 3.3.3 or as specified in
- [RFC3545] Section 2.1, using 16-bit CIDs.
- Value: 2067 (hex)
-
- CONTEXT_STATE
- The frame is a link-level message sent from the decompressor to
- the compressor as specified in [RFC2508] Section 3.3.5.
- Value: 2065 (hex)
-
-5. Changes from RFC 2509
-
- Two new suboptions are specified. See Sections 2.3 and 2.4.
-
-6. References
-
-6.1. Normative References
-
- [RFC1144] Jacobson, V., "Compressing TCP/IP Headers for low-speed
- serial links", RFC 1144, February 1990.
-
- [RFC1332] McGregor, G., "The PPP Internet Protocol Control Protocol
- (IPCP)", RFC 1332, May 1992.
-
- [RFC2472] Haskin, D. and E. Allen, "IP Version 6 over PPP", RFC
- 2472, December 1998.
-
- [RFC2507] Degermark, M., Nordgren, B. and S. Pink, "Header
- Compression for IP", RFC 2507, February 1999.
-
-
-
-
-
-Koren, et al. Standards Track [Page 9]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- [RFC2508] Casner, S. and V. Jacobson, "Compressing IP/UDP/RTP
- Headers for Low-Speed Serial Links", RFC 2508, February
- 1999.
-
- [RFC3241] Bormann, C., "Robust Header Compression (ROHC) over PPP",
- RFC 3241, April 2002.
-
- [RFC3545] Koren, T., Casner, S., Geevarghese, J., Thompson, B. and
- P. Ruddy, "Enhanced Compressed RTP (CRTP) for Links with
- High Delay, Packet Loss and Reordering", RFC 3545, July
- 2003.
-
-6.2. Informative References
-
- [RFC1661] Simpson, W., Ed., "The Point-To-Point Protocol (PPP)", STD
- 51, RFC 1661, July 1994.
-
- [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
- IANA Considerations Section in RFCs", BCP 26, RFC 2434,
- October 1998.
-
- [RFC2686] Bormann, C., "The Multi-Class Extension to Multi-Link
- PPP", RFC 2686, September 1999.
-
- [RFC3550] Schulzrinne, H., Casner, S., Frederick, R. and V.
- Jacobson, "RTP: A Transport Protocol for Real-Time
- Applications", RFC 3550, July 2003.
-
-7. IANA Considerations
-
- This document does not require any additional allocations from
- existing namespaces in the IANA Point-to-Point Protocol Field
- Assignments registry. However, there are three namespaces that were
- defined by RFC 1332, RFC 2472, and RFC 2509 but not created in the
- registry. Those three namespaces, described below, have been added
- to the PPP registry. This document specifies two additional
- allocations in the third one.
-
- Section 3.2 of RFC 1332 specifies an IP-Compression-Protocol
- Configuration Option for the PPP IP Control Protocol and defines one
- value for the IP-Compression-Protocol type field in that option. An
- IANA registry has been created to allocate additional values for that
- type field. As stated in RFC 1332, the values for the IP-
- Compression-Protocol type field are always the same as the (primary)
- PPP DLL Protocol Number assigned to packets of the particular
- compression protocol. Assignment of additional IP-Compression-
- Protocol type values is through the IETF consensus procedure as
- specified in [RFC2434].
-
-
-
-Koren, et al. Standards Track [Page 10]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- Section 4.2 of RFC 2472 specifies an IPv6-Compression-Protocol
- Configuration Option for the PPP IPv6 Control Protocol and defines
- one value for the IPv6-Compression-Protocol type field in that
- option. An IANA registry has been created to allocate additional
- values for that type field. The IPv6-Compression-Protocol
- Configuration Option has the same structure as the IP-Compression-
- Protocol Configuration Option defined in RFC 1332, but the set of
- values defined for the type field may be different. As stated in RFC
- 2472, the values for the IPv6-Compression-Protocol type field are
- always the same as the (primary) PPP DLL Protocol Number assigned to
- packets of the particular compression protocol. Assignment of
- additional IPv6-Compression-Protocol type values is through the IETF
- consensus procedure as specified in [RFC2434].
-
- Section 2.1 of RFC 2509 specifies an additional type value to be
- registered for both the IP-Compression-Protocol Configuration Option
- and the IPv6-Compression-Protocol Configuration Option to indicate
- use of the "IP Header Compression" protocol. The specification of
- that type value is repeated in Section 2.1 of this document which
- obsoletes RFC 2509. In conjunction with the additional type value,
- the format for the variable-length option is specified. The format
- includes a suboption field that may contain one or more suboptions.
- Each suboption begins with a suboption type value. An IANA registry
- has been created for the suboption type values; and is titled, "IP
- Header Compression Configuration Option Suboption Types".
-
- Section 2.2 of RFC 2509 (and this document) defines one suboption
- type. Sections 2.3 and 2.4 of this document define two additional
- suboption types. It is expected that the number of additional
- suboptions that will need to be defined is small. Therefore, anyone
- wishing to define new suboptions is required to produce a revision of
- this document to be vetted through the normal Internet Standards
- process, as specified in [RFC2434].
-
- RFC 2509 also defines nine PPP Data Link Layer Protocol Field values
- which are already listed in the IANA registry of Point-to-Point
- Protocol Field Assignments. Section 4 of this document repeats the
- specification of those values without change.
-
-8. Security Considerations
-
- Negotiation of the option defined here imposes no additional security
- considerations beyond those that otherwise apply to PPP [RFC1661].
-
- The use of header compression can, in rare cases, cause the
- misdelivery of packets. If necessary, confidentiality of packet
- contents should be assured by encryption.
-
-
-
-
-Koren, et al. Standards Track [Page 11]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
- Encryption applied at the IP layer (e.g., using IPSEC mechanisms)
- precludes header compression of the encrypted headers, though
- compression of the outer IP header and authentication/security
- headers is still possible as described in [RFC2507]. For RTP
- packets, full header compression is possible if the RTP payload is
- encrypted by itself without encrypting the UDP or RTP headers, as
- described in [RFC3550]. This method is appropriate when the UDP and
- RTP header information need not be kept confidential.
-
-9. Intellectual Property Rights Notice
-
- The IETF takes no position regarding the validity or scope of any
- intellectual property or other rights that might be claimed to
- pertain to the implementation or use of the technology described in
- this document or the extent to which any license under such rights
- might or might not be available; neither does it represent that it
- has made any effort to identify any such rights. Information on the
- IETF's procedures with respect to rights in standards-track and
- standards-related documentation can be found in BCP-11. Copies of
- claims of rights made available for publication and any assurances of
- licenses to be made available, or the result of an attempt made to
- obtain a general license or permission for the use of such
- proprietary rights by implementors or users of this specification can
- be obtained from the IETF Secretariat.
-
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights which may cover technology that may be required to practice
- this standard. Please address the information to the IETF Executive
- Director.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Koren, et al. Standards Track [Page 12]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
-10. Acknowledgements
-
- Mathias Engan was the primary author of RFC 2509, of which this
- document is a revision.
-
-11. Authors' Addresses
-
- Tmima Koren
- Cisco Systems, Inc.
- 170 West Tasman Drive
- San Jose, CA 95134-1706
- United States
-
- EMail: tmima@cisco.com
-
-
- Stephen L. Casner
- Packet Design
- 3400 Hillview Avenue, Building 3
- Palo Alto, CA 94304
- United States
-
- EMail: casner@packetdesign.com
-
-
- Carsten Bormann
- Universitaet Bremen FB3 TZI
- Postfach 330440
- D-28334 Bremen, GERMANY
-
- Phone: +49.421.218-7024
- Fax: +49.421.218-7000
- EMail: cabo@tzi.org
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Koren, et al. Standards Track [Page 13]
-
-RFC 3544 IP Header Compression over PPP July 2003
-
-
-12. Full Copyright Statement
-
- Copyright (C) The Internet Society (2003). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assignees.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Koren, et al. Standards Track [Page 14]
-
diff --git a/doc/rfc3576.txt b/doc/rfc3576.txt
deleted file mode 100644
index 89fd9eb..0000000
--- a/doc/rfc3576.txt
+++ /dev/null
@@ -1,1683 +0,0 @@
-
-
-
-
-
-
-Network Working Group M. Chiba
-Request for Comments: 3576 G. Dommety
-Category: Informational M. Eklund
- Cisco Systems, Inc.
- D. Mitton
- Circular Logic, UnLtd.
- B. Aboba
- Microsoft Corporation
- July 2003
-
-
- Dynamic Authorization Extensions to Remote
- Authentication Dial In User Service (RADIUS)
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2003). All Rights Reserved.
-
-Abstract
-
- This document describes a currently deployed extension to the Remote
- Authentication Dial In User Service (RADIUS) protocol, allowing
- dynamic changes to a user session, as implemented by network access
- server products. This includes support for disconnecting users and
- changing authorizations applicable to a user session.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 1]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
-Table of Contents
-
- 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
- 1.1. Applicability. . . . . . . . . . . . . . . . . . . . . . 3
- 1.2. Requirements Language . . . . . . . . . . . . . . . . . 5
- 1.3. Terminology. . . . . . . . . . . . . . . . . . . . . . . 5
- 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
- 2.1. Disconnect Messages (DM) . . . . . . . . . . . . . . . . 5
- 2.2. Change-of-Authorization Messages (CoA) . . . . . . . . . 6
- 2.3. Packet Format. . . . . . . . . . . . . . . . . . . . . . 7
- 3. Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . 11
- 3.1. Error-Cause. . . . . . . . . . . . . . . . . . . . . . . 13
- 3.2. Table of Attributes. . . . . . . . . . . . . . . . . . . 16
- 4. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 20
- 5. Security Considerations. . . . . . . . . . . . . . . . . . . . 21
- 5.1. Authorization Issues . . . . . . . . . . . . . . . . . . 21
- 5.2. Impersonation. . . . . . . . . . . . . . . . . . . . . . 22
- 5.3. IPsec Usage Guidelines . . . . . . . . . . . . . . . . . 22
- 5.4. Replay Protection. . . . . . . . . . . . . . . . . . . . 25
- 6. Example Traces . . . . . . . . . . . . . . . . . . . . . . . . 26
- 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26
- 7.1. Normative References . . . . . . . . . . . . . . . . . . 26
- 7.2. Informative References . . . . . . . . . . . . . . . . . 27
- 8. Intellectual Property Statement. . . . . . . . . . . . . . . . 28
- 9. Acknowledgements. . . . . . . . . . . . . . . . . . . . . . . 28
- 10. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 29
- 11. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 30
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 2]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
-1. Introduction
-
- The RADIUS protocol, defined in [RFC2865], does not support
- unsolicited messages sent from the RADIUS server to the Network
- Access Server (NAS).
-
- However, there are many instances in which it is desirable for
- changes to be made to session characteristics, without requiring the
- NAS to initiate the exchange. For example, it may be desirable for
- administrators to be able to terminate a user session in progress.
- Alternatively, if the user changes authorization level, this may
- require that authorization attributes be added/deleted from a user
- session.
-
- To overcome these limitations, several vendors have implemented
- additional RADIUS commands in order to be able to support unsolicited
- messages sent from the RADIUS server to the NAS. These extended
- commands provide support for Disconnect and Change-of-Authorization
- (CoA) messages. Disconnect messages cause a user session to be
- terminated immediately, whereas CoA messages modify session
- authorization attributes such as data filters.
-
-1.1. Applicability
-
- This protocol is being recommended for publication as an
- Informational RFC rather than as a standards-track RFC because of
- problems that cannot be fixed without creating incompatibilities with
- deployed implementations. This includes security vulnerabilities, as
- well as semantic ambiguities resulting from the design of the
- Change-of-Authorization (CoA) commands. While fixes are recommended,
- they cannot be made mandatory since this would be incompatible with
- existing implementations.
-
- Existing implementations of this protocol do not support
- authorization checks, so that an ISP sharing a NAS with another ISP
- could disconnect or change authorizations for another ISP's users.
- In order to remedy this problem, a "Reverse Path Forwarding" check is
- recommended. See Section 5.1. for details.
-
- Existing implementations utilize per-packet authentication and
- integrity protection algorithms with known weaknesses [MD5Attack].
- To provide stronger per-packet authentication and integrity
- protection, the use of IPsec is recommended. See Section 5.3. for
- details.
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 3]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- Existing implementations lack replay protection. In order to support
- replay detection, it is recommended that the Event-Timestamp
- Attribute be added to all messages in situations where IPsec replay
- protection is not employed. Implementations should be configurable
- to silently discard messages lacking the Event-Timestamp Attribute.
- See Section 5.4. for details.
-
- The approach taken with CoA commands in existing implementations
- results in a semantic ambiguity. Existing implementations of the
- CoA-Request identify the affected session, as well as supply the
- authorization changes. Since RADIUS Attributes included within
- existing implementations of the CoA-Request can be used for session
- identification or authorization change, it may not be clear which
- function a given attribute is serving.
-
- The problem does not exist within [Diameter], in which authorization
- change is requested by a command using Attribute Value Pairs (AVPs)
- solely for identification, resulting in initiation of a standard
- Request/Response sequence where authorization changes are supplied.
- As a result, in no command can Diameter AVPs have multiple potential
- meanings.
-
- Due to differences in handling change-of-authorization requests in
- RADIUS and Diameter, it may be difficult or impossible for a
- Diameter/RADIUS gateway to successfully translate existing
- implementations of this specification to equivalent messages in
- Diameter. For example, a Diameter command changing any attribute
- used for identification within existing CoA-Request implementations
- cannot be translated, since such an authorization change is
- impossible to carry out in existing implementations. Similarly,
- translation between existing implementations of Disconnect-Request or
- CoA-Request messages and Diameter is tricky because a Disconnect-
- Request or CoA-Request message will need to be translated to multiple
- Diameter commands.
-
- To simplify translation between RADIUS and Diameter, a Service-Type
- Attribute with value "Authorize Only" can (optionally) be included
- within a Disconnect-Request or CoA-Request. Such a Request contains
- only identification attributes. A NAS supporting the "Authorize
- Only" Service-Type within a Disconnect-Request or CoA-Request
- responds with a NAK containing a Service-Type Attribute with value
- "Authorize Only" and an Error-Cause Attribute with value "Request
- Initiated". The NAS will then send an Access-Request containing a
- Service-Type Attribute with a value of "Authorize Only". This usage
- sequence is akin to what occurs in Diameter and so is more easily
- translated by a Diameter/RADIUS gateway.
-
-
-
-
-
-Chiba, et al. Informational [Page 4]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
-1.2. Requirements Language
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized. The key
- words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
- "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document
- are to be interpreted as described in [RFC2119].
-
-1.3. Terminology
-
- This document frequently uses the following terms:
-
- Network Access Server (NAS): The device providing access to the
- network.
-
- service: The NAS provides a service to the user,
- such as IEEE 802 or PPP.
-
- session: Each service provided by the NAS to a
- user constitutes a session, with the
- beginning of the session defined as the
- point where service is first provided
- and the end of the session defined as
- the point where service is ended. A
- user may have multiple sessions in
- parallel or series if the NAS supports
- that.
-
- silently discard: This means the implementation discards
- the packet without further processing.
- The implementation SHOULD provide the
- capability of logging the error,
- including the contents of the silently
- discarded packet, and SHOULD record the
- event in a statistics counter.
-
-2. Overview
-
- This section describes the most commonly implemented features of
- Disconnect and Change-of-Authorization messages.
-
-2.1. Disconnect Messages (DM)
-
- A Disconnect-Request packet is sent by the RADIUS server in order to
- terminate a user session on a NAS and discard all associated session
- context. The Disconnect-Request packet is sent to UDP port 3799, and
- identifies the NAS as well as the user session to be terminated by
- inclusion of the identification attributes described in Section 3.
-
-
-
-Chiba, et al. Informational [Page 5]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- +----------+ Disconnect-Request +----------+
- | | <-------------------- | |
- | NAS | | RADIUS |
- | | Disconnect-Response | Server |
- | | ---------------------> | |
- +----------+ +----------+
-
- The NAS responds to a Disconnect-Request packet sent by a RADIUS
- server with a Disconnect-ACK if all associated session context is
- discarded and the user session is no longer connected, or a
- Disconnect-NAK, if the NAS was unable to disconnect the session and
- discard all associated session context. A NAS MUST respond to a
- Disconnect-Request including a Service-Type Attribute with value
- "Authorize Only" with a Disconnect-NAK; a Disconnect-ACK MUST NOT be
- sent. A NAS MUST respond to a Disconnect-Request including a
- Service-Type Attribute with an unsupported value with a Disconnect-
- NAK; an Error-Cause Attribute with value "Unsupported Service" MAY be
- included. A Disconnect-ACK MAY contain the Attribute
- Acct-Terminate-Cause (49) [RFC2866] with the value set to 6 for
- Admin-Reset.
-
-2.2. Change-of-Authorization Messages (CoA)
-
- CoA-Request packets contain information for dynamically changing
- session authorizations. This is typically used to change data
- filters. The data filters can be of either the ingress or egress
- kind, and are sent in addition to the identification attributes as
- described in section 3. The port used, and packet format (described
- in Section 2.3.), are the same as that for Disconnect-Request
- Messages.
-
- The following attribute MAY be sent in a CoA-Request:
-
- Filter-ID (11) - Indicates the name of a data filter list to be
- applied for the session that the identification
- attributes map to.
-
- +----------+ CoA-Request +----------+
- | | <-------------------- | |
- | NAS | | RADIUS |
- | | CoA-Response | Server |
- | | ---------------------> | |
- +----------+ +----------+
-
- The NAS responds to a CoA-Request sent by a RADIUS server with a
- CoA-ACK if the NAS is able to successfully change the authorizations
- for the user session, or a CoA-NAK if the Request is unsuccessful. A
- NAS MUST respond to a CoA-Request including a Service-Type Attribute
-
-
-
-Chiba, et al. Informational [Page 6]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- with value "Authorize Only" with a CoA-NAK; a CoA-ACK MUST NOT be
- sent. A NAS MUST respond to a CoA-Request including a Service-Type
- Attribute with an unsupported value with a CoA-NAK; an Error-Cause
- Attribute with value "Unsupported Service" MAY be included.
-
-2.3. Packet Format
-
- For either Disconnect-Request or CoA-Request messages UDP port 3799
- is used as the destination port. For responses, the source and
- destination ports are reversed. Exactly one RADIUS packet is
- encapsulated in the UDP Data field.
-
- A summary of the data format is shown below. The fields are
- transmitted from left to right.
-
- The packet format consists of the fields: Code, Identifier, Length,
- Authenticator, and Attributes in Type:Length:Value (TLV) format. All
- fields hold the same meaning as those described in RADIUS [RFC2865].
- The Authenticator field MUST be calculated in the same way as is
- specified for an Accounting-Request in [RFC2866].
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Code | Identifier | Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- | Authenticator |
- | |
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Attributes ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-
-
- Code
-
- The Code field is one octet, and identifies the type of RADIUS
- packet. Packets received with an invalid Code field MUST be
- silently discarded. RADIUS codes (decimal) for this extension are
- assigned as follows:
-
- 40 - Disconnect-Request [RFC2882]
- 41 - Disconnect-ACK [RFC2882]
- 42 - Disconnect-NAK [RFC2882]
- 43 - CoA-Request [RFC2882]
- 44 - CoA-ACK [RFC2882]
- 45 - CoA-NAK [RFC2882]
-
-
-
-
-Chiba, et al. Informational [Page 7]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- Identifier
-
- The Identifier field is one octet, and aids in matching requests
- and replies. The RADIUS client can detect a duplicate request if
- it has the same server source IP address and source UDP port and
- Identifier within a short span of time.
-
- Unlike RADIUS as defined in [RFC2865], the responsibility for
- retransmission of Disconnect-Request and CoA-Request messages lies
- with the RADIUS server. If after sending these messages, the
- RADIUS server does not receive a response, it will retransmit.
-
- The Identifier field MUST be changed whenever the content of the
- Attributes field changes, or whenever a valid reply has been
- received for a previous request. For retransmissions where the
- contents are identical, the Identifier MUST remain unchanged.
-
- If the RADIUS server is retransmitting a Disconnect-Request or
- CoA-Request to the same client as before, and the Attributes have
- not changed, the same Request Authenticator, Identifier and source
- port MUST be used. If any Attributes have changed, a new
- Authenticator and Identifier MUST be used.
-
- Note that if the Event-Timestamp Attribute is included, it will be
- updated when the packet is retransmitted, changing the content of
- the Attributes field and requiring a new Identifier and Request
- Authenticator.
-
- If the Request to a primary proxy fails, a secondary proxy must be
- queried, if available. Issues relating to failover algorithms are
- described in [AAATransport]. Since this represents a new request,
- a new Request Authenticator and Identifier MUST be used. However,
- where the RADIUS server is sending directly to the client,
- failover typically does not make sense, since Disconnect or CoA
- messages need to be delivered to the NAS where the session
- resides.
-
- Length
-
- The Length field is two octets. It indicates the length of the
- packet including the Code, Identifier, Length, Authenticator and
- Attribute fields. Octets outside the range of the Length field
- MUST be treated as padding and ignored on reception. If the
- packet is shorter than the Length field indicates, it MUST be
- silently discarded. The minimum length is 20 and the maximum
- length is 4096.
-
-
-
-
-
-Chiba, et al. Informational [Page 8]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- Authenticator
-
- The Authenticator field is sixteen (16) octets. The most
- significant octet is transmitted first. This value is used to
- authenticate the messages between the RADIUS server and client.
-
- Request Authenticator
-
- In Request packets, the Authenticator value is a 16 octet MD5
- [RFC1321] checksum, called the Request Authenticator. The Request
- Authenticator is calculated the same way as for an Accounting-
- Request, specified in [RFC2866].
-
- Note that the Request Authenticator of a Disconnect or CoA-Request
- cannot be done the same way as the Request Authenticator of a
- RADIUS Access-Request, because there is no User-Password Attribute
- in a Disconnect-Request or CoA-Request.
-
- Response Authenticator
-
- The Authenticator field in a Response packet (e.g. Disconnect-ACK,
- Disconnect-NAK, CoA-ACK, or CoA-NAK) is called the Response
- Authenticator, and contains a one-way MD5 hash calculated over a
- stream of octets consisting of the Code, Identifier, Length, the
- Request Authenticator field from the packet being replied to, and
- the response Attributes if any, followed by the shared secret.
- The resulting 16 octet MD5 hash value is stored in the
- Authenticator field of the Response packet.
-
- Administrative note: As noted in [RFC2865] Section 3, the secret
- (password shared between the client and the RADIUS server) SHOULD be
- at least as large and unguessable as a well-chosen password. RADIUS
- clients MUST use the source IP address of the RADIUS UDP packet to
- decide which shared secret to use, so that requests can be proxied.
-
- Attributes
-
- In Disconnect and CoA-Request messages, all Attributes are treated
- as mandatory. A NAS MUST respond to a CoA-Request containing one
- or more unsupported Attributes or Attribute values with a CoA-NAK;
- a Disconnect-Request containing one or more unsupported Attributes
- or Attribute values MUST be answered with a Disconnect-NAK. State
- changes resulting from a CoA-Request MUST be atomic: if the
- Request is successful, a CoA-ACK is sent, and all requested
- authorization changes MUST be made. If the CoA-Request is
- unsuccessful, a CoA-NAK MUST be sent, and the requested
-
-
-
-
-
-Chiba, et al. Informational [Page 9]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- authorization changes MUST NOT be made. Similarly, a state change
- MUST NOT occur as a result of an unsuccessful Disconnect-Request;
- here a Disconnect-NAK MUST be sent.
-
- Since within this specification attributes may be used for
- identification, authorization or other purposes, even if a NAS
- implements an attribute for use with RADIUS authentication and
- accounting, it may not support inclusion of that attribute within
- Disconnect-Request or CoA-Request messages, given the difference
- in attribute semantics. This is true even for attributes
- specified within [RFC2865], [RFC2868], [RFC2869] or [RFC3162] as
- allowable within Access-Accept messages.
-
- As a result, attributes beyond those specified in Section 3.2.
- SHOULD NOT be included within Disconnect or CoA messages since
- this could produce unpredictable results.
-
- When using a forwarding proxy, the proxy must be able to alter the
- packet as it passes through in each direction. When the proxy
- forwards a Disconnect or CoA-Request, it MAY add a Proxy-State
- Attribute, and when the proxy forwards a response, it MUST remove
- its Proxy-State Attribute if it added one. Proxy-State is always
- added or removed after any other Proxy-States, but no other
- assumptions regarding its location within the list of Attributes
- can be made. Since Disconnect and CoA responses are authenticated
- on the entire packet contents, the stripping of the Proxy-State
- Attribute invalidates the integrity check - so the proxy needs to
- recompute it. A forwarding proxy MUST NOT modify existing Proxy-
- State, State, or Class Attributes present in the packet.
-
- If there are any Proxy-State Attributes in a Disconnect-Request or
- CoA-Request received from the server, the forwarding proxy MUST
- include those Proxy-State Attributes in its response to the
- server. The forwarding proxy MAY include the Proxy-State
- Attributes in the Disconnect-Request or CoA-Request when it
- forwards the request, or it MAY omit them in the forwarded
- request. If the forwarding proxy omits the Proxy-State Attributes
- in the request, it MUST attach them to the response before sending
- it to the server.
-
-
-
-
-
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 10]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
-3. Attributes
-
- In Disconnect-Request and CoA-Request packets, certain attributes are
- used to uniquely identify the NAS as well as a user session on the
- NAS. All NAS identification attributes included in a Request message
- MUST match in order for a Disconnect-Request or CoA-Request to be
- successful; otherwise a Disconnect-NAK or CoA-NAK SHOULD be sent.
- For session identification attributes, the User-Name and Acct-
- Session-Id Attributes, if included, MUST match in order for a
- Disconnect-Request or CoA-Request to be successful; other session
- identification attributes SHOULD match. Where a mismatch of session
- identification attributes is detected, a Disconnect-NAK or CoA-NAK
- SHOULD be sent. The ability to use NAS or session identification
- attributes to map to unique/multiple sessions is beyond the scope of
- this document. Identification attributes include NAS and session
- identification attributes, as described below.
-
- NAS identification attributes
-
- Attribute # Reference Description
- --------- --- --------- -----------
- NAS-IP-Address 4 [RFC2865] The IPv4 address of the NAS.
- NAS-Identifier 32 [RFC2865] String identifying the NAS.
- NAS-IPv6-Address 95 [RFC3162] The IPv6 address of the NAS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 11]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- Session identification attributes
-
- Attribute # Reference Description
- --------- --- --------- -----------
- User-Name 1 [RFC2865] The name of the user
- associated with the session.
- NAS-Port 5 [RFC2865] The port on which the
- session is terminated.
- Framed-IP-Address 8 [RFC2865] The IPv4 address associated
- with the session.
- Called-Station-Id 30 [RFC2865] The link address to which
- the session is connected.
- Calling-Station-Id 31 [RFC2865] The link address from which
- the session is connected.
- Acct-Session-Id 44 [RFC2866] The identifier uniquely
- identifying the session
- on the NAS.
- Acct-Multi-Session-Id 50 [RFC2866] The identifier uniquely
- identifying related sessions.
- NAS-Port-Type 61 [RFC2865] The type of port used.
- NAS-Port-Id 87 [RFC2869] String identifying the port
- where the session is.
- Originating-Line-Info 94 [NASREQ] Provides information on the
- characteristics of the line
- from which a session
- originated.
- Framed-Interface-Id 96 [RFC3162] The IPv6 Interface Identifier
- associated with the session;
- always sent with
- Framed-IPv6-Prefix.
- Framed-IPv6-Prefix 97 [RFC3162] The IPv6 prefix associated
- with the session, always sent
- with Framed-Interface-Id.
-
- To address security concerns described in Section 5.1., the User-Name
- Attribute SHOULD be present in Disconnect-Request or CoA-Request
- packets; one or more additional session identification attributes MAY
- also be present. To address security concerns described in Section
- 5.2., one or more of the NAS-IP-Address or NAS-IPv6-Address
- Attributes SHOULD be present in Disconnect-Request or CoA-Request
- packets; the NAS-Identifier Attribute MAY be present in addition.
-
- If one or more authorization changes specified in a CoA-Request
- cannot be carried out, or if one or more attributes or attribute-
- values is unsupported, a CoA-NAK MUST be sent. Similarly, if there
- are one or more unsupported attributes or attribute values in a
- Disconnect-Request, a Disconnect-NAK MUST be sent.
-
-
-
-
-Chiba, et al. Informational [Page 12]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- Where a Service-Type Attribute with value "Authorize Only" is
- included within a CoA-Request or Disconnect-Request, attributes
- representing an authorization change MUST NOT be included; only
- identification attributes are permitted. If attributes other than
- NAS or session identification attributes are included in such a CoA-
- Request, implementations MUST send a CoA-NAK; an Error-Cause
- Attribute with value "Unsupported Attribute" MAY be included.
- Similarly, if attributes other than NAS or session identification
- attributes are included in such a Disconnect-Request, implementations
- MUST send a Disconnect-NAK; an Error-Cause Attribute with value
- "Unsupported Attribute" MAY be included.
-
-3.1. Error-Cause
-
- Description
-
- It is possible that the NAS cannot honor Disconnect-Request or
- CoA-Request messages for some reason. The Error-Cause Attribute
- provides more detail on the cause of the problem. It MAY be
- included within Disconnect-ACK, Disconnect-NAK and CoA-NAK
- messages.
-
- A summary of the Error-Cause Attribute format is shown below. The
- fields are transmitted from left to right.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Length | Value
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Value (cont) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Type
-
- 101 for Error-Cause
-
- Length
-
- 6
-
- Value
-
- The Value field is four octets, containing an integer specifying
- the cause of the error. Values 0-199 and 300-399 are reserved.
- Values 200-299 represent successful completion, so that these
- values may only be sent within Disconnect-ACK or CoA-ACK message
- and MUST NOT be sent within a Disconnect-NAK or CoA-NAK. Values
-
-
-
-Chiba, et al. Informational [Page 13]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- 400-499 represent fatal errors committed by the RADIUS server, so
- that they MAY be sent within CoA-NAK or Disconnect-NAK messages,
- and MUST NOT be sent within CoA-ACK or Disconnect-ACK messages.
- Values 500-599 represent fatal errors occurring on a NAS or RADIUS
- proxy, so that they MAY be sent within CoA-NAK and Disconnect-NAK
- messages, and MUST NOT be sent within CoA-ACK or Disconnect-ACK
- messages. Error-Cause values SHOULD be logged by the RADIUS
- server. Error-Code values (expressed in decimal) include:
-
- # Value
- --- -----
- 201 Residual Session Context Removed
- 202 Invalid EAP Packet (Ignored)
- 401 Unsupported Attribute
- 402 Missing Attribute
- 403 NAS Identification Mismatch
- 404 Invalid Request
- 405 Unsupported Service
- 406 Unsupported Extension
- 501 Administratively Prohibited
- 502 Request Not Routable (Proxy)
- 503 Session Context Not Found
- 504 Session Context Not Removable
- 505 Other Proxy Processing Error
- 506 Resources Unavailable
- 507 Request Initiated
-
- "Residual Session Context Removed" is sent in response to a
- Disconnect-Request if the user session is no longer active, but
- residual session context was found and successfully removed. This
- value is only sent within a Disconnect-ACK and MUST NOT be sent
- within a CoA-ACK, Disconnect-NAK or CoA-NAK.
-
- "Invalid EAP Packet (Ignored)" is a non-fatal error that MUST NOT be
- sent by implementations of this specification.
-
- "Unsupported Attribute" is a fatal error sent if a Request contains
- an attribute (such as a Vendor-Specific or EAP-Message Attribute)
- that is not supported.
-
- "Missing Attribute" is a fatal error sent if critical attributes
- (such as NAS or session identification attributes) are missing from a
- Request.
-
- "NAS Identification Mismatch" is a fatal error sent if one or more
- NAS identification attributes (see Section 3.) do not match the
- identity of the NAS receiving the Request.
-
-
-
-
-Chiba, et al. Informational [Page 14]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- "Invalid Request" is a fatal error sent if some other aspect of the
- Request is invalid, such as if one or more attributes (such as EAP-
- Message Attribute(s)) are not formatted properly.
-
- "Unsupported Service" is a fatal error sent if a Service-Type
- Attribute included with the Request is sent with an invalid or
- unsupported value.
-
- "Unsupported Extension" is a fatal error sent due to lack of support
- for an extension such as Disconnect and/or CoA messages. This will
- typically be sent by a proxy receiving an ICMP port unreachable
- message after attempting to forward a Request to the NAS.
-
- "Administratively Prohibited" is a fatal error sent if the NAS is
- configured to prohibit honoring of Request messages for the specified
- session.
-
- "Request Not Routable" is a fatal error which MAY be sent by a RADIUS
- proxy and MUST NOT be sent by a NAS. It indicates that the RADIUS
- proxy was unable to determine how to route the Request to the NAS.
- For example, this can occur if the required entries are not present
- in the proxy's realm routing table.
-
- "Session Context Not Found" is a fatal error sent if the session
- context identified in the Request does not exist on the NAS.
-
- "Session Context Not Removable" is a fatal error sent in response to
- a Disconnect-Request if the NAS was able to locate the session
- context, but could not remove it for some reason. It MUST NOT be
- sent within a CoA-ACK, CoA-NAK or Disconnect-ACK, only within a
- Disconnect-NAK.
-
- "Other Proxy Processing Error" is a fatal error sent in response to a
- Request that could not be processed by a proxy, for reasons other
- than routing.
-
- "Resources Unavailable" is a fatal error sent when a Request could
- not be honored due to lack of available NAS resources (memory, non-
- volatile storage, etc.).
-
- "Request Initiated" is a fatal error sent in response to a Request
- including a Service-Type Attribute with a value of "Authorize Only".
- It indicates that the Disconnect-Request or CoA-Request has not been
- honored, but that a RADIUS Access-Request including a Service-Type
- Attribute with value "Authorize Only" is being sent to the RADIUS
- server.
-
-
-
-
-
-Chiba, et al. Informational [Page 15]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
-3.2. Table of Attributes
-
- The following table provides a guide to which attributes may be found
- in which packets, and in what quantity.
-
- Change-of-Authorization Messages
-
- Request ACK NAK # Attribute
- 0-1 0 0 1 User-Name [Note 1]
- 0-1 0 0 4 NAS-IP-Address [Note 1]
- 0-1 0 0 5 NAS-Port [Note 1]
- 0-1 0 0-1 6 Service-Type [Note 6]
- 0-1 0 0 7 Framed-Protocol [Note 3]
- 0-1 0 0 8 Framed-IP-Address [Note 1]
- 0-1 0 0 9 Framed-IP-Netmask [Note 3]
- 0-1 0 0 10 Framed-Routing [Note 3]
- 0+ 0 0 11 Filter-ID [Note 3]
- 0-1 0 0 12 Framed-MTU [Note 3]
- 0+ 0 0 13 Framed-Compression [Note 3]
- 0+ 0 0 14 Login-IP-Host [Note 3]
- 0-1 0 0 15 Login-Service [Note 3]
- 0-1 0 0 16 Login-TCP-Port [Note 3]
- 0+ 0 0 18 Reply-Message [Note 2]
- 0-1 0 0 19 Callback-Number [Note 3]
- 0-1 0 0 20 Callback-Id [Note 3]
- 0+ 0 0 22 Framed-Route [Note 3]
- 0-1 0 0 23 Framed-IPX-Network [Note 3]
- 0-1 0-1 0-1 24 State [Note 7]
- 0+ 0 0 25 Class [Note 3]
- 0+ 0 0 26 Vendor-Specific [Note 3]
- 0-1 0 0 27 Session-Timeout [Note 3]
- 0-1 0 0 28 Idle-Timeout [Note 3]
- 0-1 0 0 29 Termination-Action [Note 3]
- 0-1 0 0 30 Called-Station-Id [Note 1]
- 0-1 0 0 31 Calling-Station-Id [Note 1]
- 0-1 0 0 32 NAS-Identifier [Note 1]
- 0+ 0+ 0+ 33 Proxy-State
- 0-1 0 0 34 Login-LAT-Service [Note 3]
- 0-1 0 0 35 Login-LAT-Node [Note 3]
- 0-1 0 0 36 Login-LAT-Group [Note 3]
- 0-1 0 0 37 Framed-AppleTalk-Link [Note 3]
- 0+ 0 0 38 Framed-AppleTalk-Network [Note 3]
- 0-1 0 0 39 Framed-AppleTalk-Zone [Note 3]
- 0-1 0 0 44 Acct-Session-Id [Note 1]
- 0-1 0 0 50 Acct-Multi-Session-Id [Note 1]
- 0-1 0-1 0-1 55 Event-Timestamp
- 0-1 0 0 61 NAS-Port-Type [Note 1]
- Request ACK NAK # Attribute
-
-
-
-Chiba, et al. Informational [Page 16]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- Request ACK NAK # Attribute
- 0-1 0 0 62 Port-Limit [Note 3]
- 0-1 0 0 63 Login-LAT-Port [Note 3]
- 0+ 0 0 64 Tunnel-Type [Note 5]
- 0+ 0 0 65 Tunnel-Medium-Type [Note 5]
- 0+ 0 0 66 Tunnel-Client-Endpoint [Note 5]
- 0+ 0 0 67 Tunnel-Server-Endpoint [Note 5]
- 0+ 0 0 69 Tunnel-Password [Note 5]
- 0-1 0 0 71 ARAP-Features [Note 3]
- 0-1 0 0 72 ARAP-Zone-Access [Note 3]
- 0+ 0 0 78 Configuration-Token [Note 3]
- 0+ 0-1 0 79 EAP-Message [Note 2]
- 0-1 0-1 0-1 80 Message-Authenticator
- 0+ 0 0 81 Tunnel-Private-Group-ID [Note 5]
- 0+ 0 0 82 Tunnel-Assignment-ID [Note 5]
- 0+ 0 0 83 Tunnel-Preference [Note 5]
- 0-1 0 0 85 Acct-Interim-Interval [Note 3]
- 0-1 0 0 87 NAS-Port-Id [Note 1]
- 0-1 0 0 88 Framed-Pool [Note 3]
- 0+ 0 0 90 Tunnel-Client-Auth-ID [Note 5]
- 0+ 0 0 91 Tunnel-Server-Auth-ID [Note 5]
- 0-1 0 0 94 Originating-Line-Info [Note 1]
- 0-1 0 0 95 NAS-IPv6-Address [Note 1]
- 0-1 0 0 96 Framed-Interface-Id [Note 1]
- 0+ 0 0 97 Framed-IPv6-Prefix [Note 1]
- 0+ 0 0 98 Login-IPv6-Host [Note 3]
- 0+ 0 0 99 Framed-IPv6-Route [Note 3]
- 0-1 0 0 100 Framed-IPv6-Pool [Note 3]
- 0 0 0+ 101 Error-Cause
- Request ACK NAK # Attribute
-
- Disconnect Messages
-
- Request ACK NAK # Attribute
- 0-1 0 0 1 User-Name [Note 1]
- 0-1 0 0 4 NAS-IP-Address [Note 1]
- 0-1 0 0 5 NAS-Port [Note 1]
- 0-1 0 0-1 6 Service-Type [Note 6]
- 0-1 0 0 8 Framed-IP-Address [Note 1]
- 0+ 0 0 18 Reply-Message [Note 2]
- 0-1 0-1 0-1 24 State [Note 7]
- 0+ 0 0 25 Class [Note 4]
- 0+ 0 0 26 Vendor-Specific
- 0-1 0 0 30 Called-Station-Id [Note 1]
- 0-1 0 0 31 Calling-Station-Id [Note 1]
- 0-1 0 0 32 NAS-Identifier [Note 1]
- 0+ 0+ 0+ 33 Proxy-State
- Request ACK NAK # Attribute
-
-
-
-Chiba, et al. Informational [Page 17]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- Request ACK NAK # Attribute
- 0-1 0 0 44 Acct-Session-Id [Note 1]
- 0-1 0-1 0 49 Acct-Terminate-Cause
- 0-1 0 0 50 Acct-Multi-Session-Id [Note 1]
- 0-1 0-1 0-1 55 Event-Timestamp
- 0-1 0 0 61 NAS-Port-Type [Note 1]
- 0+ 0-1 0 79 EAP-Message [Note 2]
- 0-1 0-1 0-1 80 Message-Authenticator
- 0-1 0 0 87 NAS-Port-Id [Note 1]
- 0-1 0 0 94 Originating-Line-Info [Note 1]
- 0-1 0 0 95 NAS-IPv6-Address [Note 1]
- 0-1 0 0 96 Framed-Interface-Id [Note 1]
- 0+ 0 0 97 Framed-IPv6-Prefix [Note 1]
- 0 0+ 0+ 101 Error-Cause
- Request ACK NAK # Attribute
-
- [Note 1] Where NAS or session identification attributes are included
- in Disconnect-Request or CoA-Request messages, they are used for
- identification purposes only. These attributes MUST NOT be used for
- purposes other than identification (e.g. within CoA-Request messages
- to request authorization changes).
-
- [Note 2] The Reply-Message Attribute is used to present a displayable
- message to the user. The message is only displayed as a result of a
- successful Disconnect-Request or CoA-Request (where a Disconnect-ACK
- or CoA-ACK is subsequently sent). Where EAP is used for
- authentication, an EAP-Message/Notification-Request Attribute is sent
- instead, and Disconnect-ACK or CoA-ACK messages contain an EAP-
- Message/Notification-Response Attribute.
-
- [Note 3] When included within a CoA-Request, these attributes
- represent an authorization change request. When one of these
- attributes is omitted from a CoA-Request, the NAS assumes that the
- attribute value is to remain unchanged. Attributes included in a
- CoA-Request replace all existing value(s) of the same attribute(s).
-
- [Note 4] When included within a successful Disconnect-Request (where
- a Disconnect-ACK is subsequently sent), the Class Attribute SHOULD be
- sent unmodified by the client to the accounting server in the
- Accounting Stop packet. If the Disconnect-Request is unsuccessful,
- then the Class Attribute is not processed.
-
- [Note 5] When included within a CoA-Request, these attributes
- represent an authorization change request. Where tunnel attribute(s)
- are sent within a successful CoA-Request, all existing tunnel
- attributes are removed and replaced by the new attribute(s).
-
-
-
-
-
-Chiba, et al. Informational [Page 18]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- [Note 6] When included within a Disconnect-Request or CoA-Request, a
- Service-Type Attribute with value "Authorize Only" indicates that the
- Request only contains NAS and session identification attributes, and
- that the NAS should attempt reauthorization by sending an Access-
- Request with a Service-Type Attribute with value "Authorize Only".
- This enables a usage model akin to that supported in Diameter, thus
- easing translation between the two protocols. Support for the
- Service-Type Attribute is optional within CoA-Request and
- Disconnect-Request messages; where it is not included, the Request
- message may contain both identification and authorization attributes.
- A NAS that does not support the Service-Type Attribute with the value
- "Authorize Only" within a Disconnect-Request MUST respond with a
- Disconnect-NAK including no Service-Type Attribute; an Error-Cause
- Attribute with value "Unsupported Service" MAY be included. A NAS
- that does not support the Service-Type Attribute with the value
- "Authorize Only" within a CoA-Request MUST respond with a CoA-NAK
- including no Service-Type Attribute; an Error-Cause Attribute with
- value "Unsupported Service" MAY be included.
-
- A NAS supporting the "Authorize Only" Service-Type value within
- Disconnect-Request or CoA-Request messages MUST respond with a
- Disconnect-NAK or CoA-NAK respectively, containing a Service-Type
- Attribute with value "Authorize Only", and an Error-Cause Attribute
- with value "Request Initiated". The NAS then sends an Access-Request
- to the RADIUS server with a Service-Type Attribute with value
- "Authorize Only". This Access-Request SHOULD contain the NAS
- attributes from the Disconnect or CoA-Request, as well as the session
- attributes from the Request legal for inclusion in an Access-Request
- as specified in [RFC2865], [RFC2868], [RFC2869] and [RFC3162]. As
- noted in [RFC2869] Section 5.19, a Message-Authenticator attribute
- SHOULD be included in an Access-Request that does not contain a
- User-Password, CHAP-Password, ARAP-Password or EAP-Message Attribute.
- The RADIUS server should send back an Access-Accept to (re-)authorize
- the session or an Access-Reject to refuse to (re-)authorize it.
-
- [Note 7] The State Attribute is available to be sent by the RADIUS
- server to the NAS in a Disconnect-Request or CoA-Request message and
- MUST be sent unmodified from the NAS to the RADIUS server in a
- subsequent ACK or NAK message. If a Service-Type Attribute with
- value "Authorize Only" is included in a Disconnect-Request or CoA-
- Request along with a State Attribute, then the State Attribute MUST
- be sent unmodified from the NAS to the RADIUS server in the resulting
- Access-Request sent to the RADIUS server, if any. The State
- Attribute is also available to be sent by the RADIUS server to the
- NAS in a CoA-Request that also includes a Termination-Action
- Attribute with the value of RADIUS-Request. If the client performs
- the Termination-Action by sending a new Access-Request upon
- termination of the current session, it MUST include the State
-
-
-
-Chiba, et al. Informational [Page 19]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- Attribute unchanged in that Access-Request. In either usage, the
- client MUST NOT interpret the Attribute locally. A Disconnect-
- Request or CoA-Request packet must have only zero or one State
- Attribute. Usage of the State Attribute is implementation dependent.
- If the RADIUS server does not recognize the State Attribute in the
- Access-Request, then it MUST send an Access-Reject.
-
- The following table defines the meaning of the above table entries.
-
- 0 This attribute MUST NOT be present in packet.
- 0+ Zero or more instances of this attribute MAY be present in
- packet.
- 0-1 Zero or one instance of this attribute MAY be present in packet.
- 1 Exactly one instance of this attribute MUST be present in packet.
-
-4. IANA Considerations
-
- This document uses the RADIUS [RFC2865] namespace, see
- <http://www.iana.org/assignments/radius-types>. There are six
- updates for the section: RADIUS Packet Type Codes. These Packet
- Types are allocated in [RADIANA]:
-
- 40 - Disconnect-Request
- 41 - Disconnect-ACK
- 42 - Disconnect-NAK
- 43 - CoA-Request
- 44 - CoA-ACK
- 45 - CoA-NAK
-
- Allocation of a new Service-Type value for "Authorize Only" is
- requested. This document also uses the UDP [RFC768] namespace, see
- <http://www.iana.org/assignments/port-numbers>. The authors request
- a port assignment from the Registered ports range. Finally, this
- specification allocates the Error-Cause Attribute (101) with the
- following decimal values:
-
- # Value
- --- -----
- 201 Residual Session Context Removed
- 202 Invalid EAP Packet (Ignored)
- 401 Unsupported Attribute
- 402 Missing Attribute
- 403 NAS Identification Mismatch
- 404 Invalid Request
- 405 Unsupported Service
- 406 Unsupported Extension
- 501 Administratively Prohibited
- 502 Request Not Routable (Proxy)
-
-
-
-Chiba, et al. Informational [Page 20]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- 503 Session Context Not Found
- 504 Session Context Not Removable
- 505 Other Proxy Processing Error
- 506 Resources Unavailable
- 507 Request Initiated
-
-5. Security Considerations
-
-5.1. Authorization Issues
-
- Where a NAS is shared by multiple providers, it is undesirable for
- one provider to be able to send Disconnect-Request or CoA-Requests
- affecting the sessions of another provider.
-
- A NAS or RADIUS proxy MUST silently discard Disconnect-Request or
- CoA-Request messages from untrusted sources. By default, a RADIUS
- proxy SHOULD perform a "reverse path forwarding" (RPF) check to
- verify that a Disconnect-Request or CoA-Request originates from an
- authorized RADIUS server. In addition, it SHOULD be possible to
- explicitly authorize additional sources of Disconnect-Request or
- CoA-Request packets relating to certain classes of sessions. For
- example, a particular source can be explicitly authorized to send
- CoA-Request messages relating to users within a set of realms.
-
- To perform the RPF check, the proxy uses the session identification
- attributes included in Disconnect-Request or CoA-Request messages, in
- order to determine the RADIUS server(s) to which an equivalent
- Access-Request could be routed. If the source address of the
- Disconnect-Request or CoA-Request is within this set, then the
- Request is forwarded; otherwise it MUST be silently discarded.
-
- Typically the proxy will extract the realm from the Network Access
- Identifier [RFC2486] included within the User-Name Attribute, and
- determine the corresponding RADIUS servers in the proxy routing
- tables. The RADIUS servers for that realm are then compared against
- the source address of the packet. Where no RADIUS proxy is present,
- the RPF check will need to be performed by the NAS itself.
-
- Since authorization to send a Disconnect-Request or CoA-Request is
- determined based on the source address and the corresponding shared
- secret, the NASes or proxies SHOULD configure a different shared
- secret for each RADIUS server.
-
-
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 21]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
-5.2. Impersonation
-
- [RFC2865] Section 3 states:
-
- A RADIUS server MUST use the source IP address of the RADIUS UDP
- packet to decide which shared secret to use, so that RADIUS
- requests can be proxied.
-
- When RADIUS requests are forwarded by a proxy, the NAS-IP-Address or
- NAS-IPv6-Address Attributes will typically not match the source
- address observed by the RADIUS server. Since the NAS-Identifier
- Attribute need not contain an FQDN, this attribute may not be
- resolvable to the source address observed by the RADIUS server, even
- when no proxy is present.
-
- As a result, the authenticity check performed by a RADIUS server or
- proxy does not verify the correctness of NAS identification
- attributes. This makes it possible for a rogue NAS to forge NAS-IP-
- Address, NAS-IPv6-Address or NAS-Identifier Attributes within a
- RADIUS Access-Request in order to impersonate another NAS. It is
- also possible for a rogue NAS to forge session identification
- attributes such as the Called-Station-Id, Calling-Station-Id, or
- Originating-Line-Info [NASREQ]. This could fool the RADIUS server
- into sending Disconnect-Request or CoA-Request messages containing
- forged session identification attributes to a NAS targeted by an
- attacker.
-
- To address these vulnerabilities RADIUS proxies SHOULD check whether
- NAS identification attributes (see Section 3.) match the source
- address of packets originating from the NAS. Where one or more
- attributes do not match, Disconnect-Request or CoA-Request messages
- SHOULD be silently discarded.
-
- Such a check may not always be possible. Since the NAS-Identifier
- Attribute need not correspond to an FQDN, it may not be resolvable to
- an IP address to be matched against the source address. Also, where
- a NAT exists between the RADIUS client and proxy, checking the NAS-
- IP-Address or NAS-IPv6-Address Attributes may not be feasible.
-
-5.3. IPsec Usage Guidelines
-
- In addition to security vulnerabilities unique to Disconnect or CoA
- messages, the protocol exchanges described in this document are
- susceptible to the same vulnerabilities as RADIUS [RFC2865]. It is
- RECOMMENDED that IPsec be employed to afford better security.
-
-
-
-
-
-
-Chiba, et al. Informational [Page 22]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- Implementations of this specification SHOULD support IPsec [RFC2401]
- along with IKE [RFC2409] for key management. IPsec ESP [RFC2406]
- with a non-null transform SHOULD be supported, and IPsec ESP with a
- non-null encryption transform and authentication support SHOULD be
- used to provide per-packet confidentiality, authentication, integrity
- and replay protection. IKE SHOULD be used for key management.
-
- Within RADIUS [RFC2865], a shared secret is used for hiding
- Attributes such as User-Password, as well as used in computation of
- the Response Authenticator. In RADIUS accounting [RFC2866], the
- shared secret is used in computation of both the Request
- Authenticator and the Response Authenticator.
-
- Since in RADIUS a shared secret is used to provide confidentiality as
- well as integrity protection and authentication, only use of IPsec
- ESP with a non-null transform can provide security services
- sufficient to substitute for RADIUS application-layer security.
- Therefore, where IPsec AH or ESP null is used, it will typically
- still be necessary to configure a RADIUS shared secret.
-
- Where RADIUS is run over IPsec ESP with a non-null transform, the
- secret shared between the NAS and the RADIUS server MAY NOT be
- configured. In this case, a shared secret of zero length MUST be
- assumed. However, a RADIUS server that cannot know whether incoming
- traffic is IPsec-protected MUST be configured with a non-null RADIUS
- shared secret.
-
- When IPsec ESP is used with RADIUS, per-packet authentication,
- integrity and replay protection MUST be used. 3DES-CBC MUST be
- supported as an encryption transform and AES-CBC SHOULD be supported.
- AES-CBC SHOULD be offered as a preferred encryption transform if
- supported. HMAC-SHA1-96 MUST be supported as an authentication
- transform. DES-CBC SHOULD NOT be used as the encryption transform.
-
- A typical IPsec policy for an IPsec-capable RADIUS client is
- "Initiate IPsec, from me to any destination port UDP 1812". This
- IPsec policy causes an IPsec SA to be set up by the RADIUS client
- prior to sending RADIUS traffic. If some RADIUS servers contacted by
- the client do not support IPsec, then a more granular policy will be
- required: "Initiate IPsec, from me to IPsec-Capable-RADIUS-Server,
- destination port UDP 1812."
-
- For a client implementing this specification, the policy would be
- "Accept IPsec, from any to me, destination port UDP 3799". This
- causes the RADIUS client to accept (but not require) use of IPsec.
- It may not be appropriate to require IPsec for all RADIUS servers
- connecting to an IPsec-enabled RADIUS client, since some RADIUS
- servers may not support IPsec.
-
-
-
-Chiba, et al. Informational [Page 23]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- For an IPsec-capable RADIUS server, a typical IPsec policy is "Accept
- IPsec, from any to me, destination port 1812". This causes the
- RADIUS server to accept (but not require) use of IPsec. It may not
- be appropriate to require IPsec for all RADIUS clients connecting to
- an IPsec-enabled RADIUS server, since some RADIUS clients may not
- support IPsec.
-
- For servers implementing this specification, the policy would be
- "Initiate IPsec, from me to any, destination port UDP 3799". This
- causes the RADIUS server to initiate IPsec when sending RADIUS
- extension traffic to any RADIUS client. If some RADIUS clients
- contacted by the server do not support IPsec, then a more granular
- policy will be required, such as "Initiate IPsec, from me to IPsec-
- capable-RADIUS-client, destination port UDP 3799".
-
- Where IPsec is used for security, and no RADIUS shared secret is
- configured, it is important that the RADIUS client and server perform
- an authorization check. Before enabling a host to act as a RADIUS
- client, the RADIUS server SHOULD check whether the host is authorized
- to provide network access. Similarly, before enabling a host to act
- as a RADIUS server, the RADIUS client SHOULD check whether the host
- is authorized for that role.
-
- RADIUS servers can be configured with the IP addresses (for IKE
- Aggressive Mode with pre-shared keys) or FQDNs (for certificate
- authentication) of RADIUS clients. Alternatively, if a separate
- Certification Authority (CA) exists for RADIUS clients, then the
- RADIUS server can configure this CA as a trust anchor [RFC3280] for
- use with IPsec.
-
- Similarly, RADIUS clients can be configured with the IP addresses
- (for IKE Aggressive Mode with pre-shared keys) or FQDNs (for
- certificate authentication) of RADIUS servers. Alternatively, if a
- separate CA exists for RADIUS servers, then the RADIUS client can
- configure this CA as a trust anchor for use with IPsec.
-
- Since unlike SSL/TLS, IKE does not permit certificate policies to be
- set on a per-port basis, certificate policies need to apply to all
- uses of IPsec on RADIUS clients and servers. In IPsec deployment
- supporting only certificate authentication, a management station
- initiating an IPsec-protected telnet session to the RADIUS server
- would need to obtain a certificate chaining to the RADIUS client CA.
- Issuing such a certificate might not be appropriate if the management
- station was not authorized as a RADIUS client.
-
- Where RADIUS clients may obtain their IP address dynamically (such as
- an Access Point supporting DHCP), Main Mode with pre-shared keys
- [RFC2409] SHOULD NOT be used, since this requires use of a group
-
-
-
-Chiba, et al. Informational [Page 24]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- pre-shared key; instead, Aggressive Mode SHOULD be used. Where
- RADIUS client addresses are statically assigned, either Aggressive
- Mode or Main Mode MAY be used. With certificate authentication, Main
- Mode SHOULD be used.
-
- Care needs to be taken with IKE Phase 1 Identity Payload selection in
- order to enable mapping of identities to pre-shared keys, even with
- Aggressive Mode. Where the ID_IPV4_ADDR or ID_IPV6_ADDR Identity
- Payloads are used and addresses are dynamically assigned, mapping of
- identities to keys is not possible, so that group pre-shared keys are
- still a practical necessity. As a result, the ID_FQDN identity
- payload SHOULD be employed in situations where Aggressive mode is
- utilized along with pre-shared keys and IP addresses are dynamically
- assigned. This approach also has other advantages, since it allows
- the RADIUS server and client to configure themselves based on the
- fully qualified domain name of their peers.
-
- Note that with IPsec, security services are negotiated at the
- granularity of an IPsec SA, so that RADIUS exchanges requiring a set
- of security services different from those negotiated with existing
- IPsec SAs will need to negotiate a new IPsec SA. Separate IPsec SAs
- are also advisable where quality of service considerations dictate
- different handling RADIUS conversations. Attempting to apply
- different quality of service to connections handled by the same IPsec
- SA can result in reordering, and falling outside the replay window.
- For a discussion of the issues, see [RFC2983].
-
-5.4. Replay Protection
-
- Where IPsec replay protection is not used, the Event-Timestamp (55)
- Attribute [RFC2869] SHOULD be included within all messages. When
- this attribute is present, both the NAS and the RADIUS server MUST
- check that the Event-Timestamp Attribute is current within an
- acceptable time window. If the Event-Timestamp Attribute is not
- current, then the message MUST be silently discarded. This implies
- the need for time synchronization within the network, which can be
- achieved by a variety of means, including secure NTP, as described in
- [NTPAUTH].
-
- Both the NAS and the RADIUS server SHOULD be configurable to silently
- discard messages lacking an Event-Timestamp Attribute. A default
- time window of 300 seconds is recommended.
-
-
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 25]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
-6. Example Traces
-
- Disconnect Request with User-Name:
-
- 0: xxxx xxxx xxxx xxxx xxxx 2801 001c 1b23 .B.....$.-(....#
- 16: 624c 3543 ceba 55f1 be55 a714 ca5e 0108 bL5C..U..U...^..
- 32: 6d63 6869 6261
-
- Disconnect Request with Acct-Session-ID:
-
- 0: xxxx xxxx xxxx xxxx xxxx 2801 001e ad0d .B..... ~.(.....
- 16: 8e53 55b6 bd02 a0cb ace6 4e38 77bd 2c0a .SU.......N8w.,.
- 32: 3930 3233 3435 3637 90234567
-
- Disconnect Request with Framed-IP-Address:
-
- 0: xxxx xxxx xxxx xxxx xxxx 2801 001a 0bda .B....."2.(.....
- 16: 33fe 765b 05f0 fd9c c32a 2f6b 5182 0806 3.v[.....*/kQ...
- 32: 0a00 0203
-
-7. References
-
-7.1. Normative References
-
- [RFC1305] Mills, D., "Network Time Protocol (version 3)
- Specification, Implementation and Analysis", RFC 1305,
- March 1992.
-
- [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC
- 1321, April 1992.
-
- [RFC2104] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC:
- Keyed-Hashing for Message Authentication", RFC 2104,
- February 1997.
-
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
- Requirement Levels", BCP 14, RFC 2119, March 1997.
-
- [RFC2401] Kent, S. and R. Atkinson, "Security Architecture for
- the Internet Protocol", RFC 2401, November 1998.
-
- [RFC2406] Kent, S. and R. Atkinson, "IP Encapsulating Security
- Payload (ESP)", RFC 2406, November 1998.
-
- [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange
- (IKE)", RFC 2409, November 1998.
-
-
-
-
-
-Chiba, et al. Informational [Page 26]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing
- an IANA Considerations Section in RFCs", BCP 26, RFC
- 2434, October 1998.
-
- [RFC2486] Aboba, B. and M. Beadles, "The Network Access
- Identifier", RFC 2486, January 1999.
-
- [RFC2865] Rigney, C., Willens, S., Rubens, A. and W. Simpson,
- "Remote Authentication Dial In User Service (RADIUS)",
- RFC 2865, June 2000.
-
- [RFC2866] Rigney, C., "RADIUS Accounting", RFC 2866, June 2000.
-
- [RFC2869] Rigney, C., Willats, W. and P. Calhoun, "RADIUS
- Extensions", RFC 2869, June 2000.
-
- [RFC3162] Aboba, B., Zorn, G. and D. Mitton, "RADIUS and IPv6",
- RFC 3162, August 2001.
-
- [RFC3280] Housley, R., Polk, W., Ford, W. and D. Solo, "Internet
- X.509 Public Key Infrastructure Certificate and
- Certificate Revocation List (CRL) Profile", RFC 3280,
- April 2002.
-
- [RADIANA] Aboba, B., "IANA Considerations for RADIUS (Remote
- Authentication Dial In User Service)", RFC 3575, July
- 2003.
-
-7.2. Informative References
-
- [RFC2882] Mitton, D., "Network Access Server Requirements:
- Extended RADIUS Practices", RFC 2882, July 2000.
-
- [RFC2983] Black, D. "Differentiated Services and Tunnels", RFC
- 2983, October 2000.
-
- [AAATransport] Aboba, B. and J. Wood, "Authentication, Authorization
- and Accounting (AAA) Transport Profile", RFC 3539,
- June 2003.
-
- [Diameter] Calhoun, P., et al., "Diameter Base Protocol", Work in
- Progress.
-
- [MD5Attack] Dobbertin, H., "The Status of MD5 After a Recent
- Attack", CryptoBytes Vol.2 No.2, Summer 1996.
-
- [NASREQ] Calhoun, P., et al., "Diameter Network Access Server
- Application", Work in Progress.
-
-
-
-Chiba, et al. Informational [Page 27]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
- [NTPAUTH] Mills, D., "Public Key Cryptography for the Network
- Time Protocol", Work in Progress.
-
-8. Intellectual Property Statement
-
- The IETF takes no position regarding the validity or scope of any
- intellectual property or other rights that might be claimed to
- pertain to the implementation or use of the technology described in
- this document or the extent to which any license under such rights
- might or might not be available; neither does it represent that it
- has made any effort to identify any such rights. Information on the
- IETF's procedures with respect to rights in standards-track and
- standards- related documentation can be found in BCP-11. Copies of
- claims of rights made available for publication and any assurances of
- licenses to be made available, or the result of an attempt made to
- obtain a general license or permission for the use of such
- proprietary rights by implementers or users of this specification can
- be obtained from the IETF Secretariat.
-
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights which may cover technology that may be required to practice
- this standard. Please address the information to the IETF Executive
- Director.
-
-9. Acknowledgments
-
- This protocol was first developed and distributed by Ascend
- Communications. Example code was distributed in their free server
- kit.
-
- The authors would like to acknowledge the valuable suggestions and
- feedback from the following people:
-
- Avi Lior <avi@bridgewatersystems.com>,
- Randy Bush <randy@psg.net>,
- Steve Bellovin <smb@research.att.com>
- Glen Zorn <gwz@cisco.com>,
- Mark Jones <mjones@bridgewatersystems.com>,
- Claudio Lapidus <clapidus@hotmail.com>,
- Anurag Batta <Anurag_Batta@3com.com>,
- Kuntal Chowdhury <chowdury@nortelnetworks.com>, and
- Tim Moore <timmoore@microsoft.com>.
- Russ Housley <housley@vigilsec.com>
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 28]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
-10. Authors' Addresses
-
- Murtaza Chiba
- Cisco Systems, Inc.
- 170 West Tasman Dr.
- San Jose CA, 95134
-
- EMail: mchiba@cisco.com
- Phone: +1 408 525 7198
-
- Gopal Dommety
- Cisco Systems, Inc.
- 170 West Tasman Dr.
- San Jose, CA 95134
-
- EMail: gdommety@cisco.com
- Phone: +1 408 525 1404
-
- Mark Eklund
- Cisco Systems, Inc.
- 170 West Tasman Dr.
- San Jose, CA 95134
-
- EMail: meklund@cisco.com
- Phone: +1 865 671 6255
-
- David Mitton
- Circular Logic UnLtd.
- 733 Turnpike Street #154
- North Andover, MA 01845
-
- EMail: david@mitton.com
- Phone: +1 978 683 1814
-
- Bernard Aboba
- Microsoft Corporation
- One Microsoft Way
- Redmond, WA 98052
-
- EMail: bernarda@microsoft.com
- Phone: +1 425 706 6605
- Fax: +1 425 936 7329
-
-
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 29]
-
-RFC 3576 Dynamic Authorization Extensions to RADIUS July 2003
-
-
-11. Full Copyright Statement
-
- Copyright (C) The Internet Society (2003). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assignees.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Chiba, et al. Informational [Page 30]
-
diff --git a/doc/rfc3580.txt b/doc/rfc3580.txt
deleted file mode 100644
index b87235c..0000000
--- a/doc/rfc3580.txt
+++ /dev/null
@@ -1,1683 +0,0 @@
-
-
-
-
-
-
-Network Working Group P. Congdon
-Request for Comments: 3580 Hewlett Packard Company
-Category: Informational B. Aboba
- Microsoft
- A. Smith
- Trapeze Networks
- G. Zorn
- Cisco Systems
- J. Roese
- Enterasys
- September 2003
-
-
- IEEE 802.1X Remote Authentication Dial In User Service (RADIUS)
- Usage Guidelines
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2003). All Rights Reserved.
-
-Abstract
-
- This document provides suggestions on Remote Authentication Dial In
- User Service (RADIUS) usage by IEEE 802.1X Authenticators. The
- material in this document is also included within a non-normative
- Appendix within the IEEE 802.1X specification, and is being presented
- as an IETF RFC for informational purposes.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 1]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-Table of Contents
-
- 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
- 1.1. Terminology. . . . . . . . . . . . . . . . . . . . . . . 3
- 1.2. Requirements Language. . . . . . . . . . . . . . . . . . 4
- 2. RADIUS Accounting Attributes . . . . . . . . . . . . . . . . . 5
- 2.1. Acct-Terminate-Cause . . . . . . . . . . . . . . . . . . 5
- 2.2. Acct-Multi-Session-Id. . . . . . . . . . . . . . . . . . 6
- 2.3. Acct-Link-Count. . . . . . . . . . . . . . . . . . . . . 7
- 3. RADIUS Authentication. . . . . . . . . . . . . . . . . . . . . 7
- 3.1. User-Name. . . . . . . . . . . . . . . . . . . . . . . . 8
- 3.2. User-Password, CHAP-Password, CHAP-Challenge . . . . . . 8
- 3.3. NAS-IP-Address, NAS-IPv6-Address . . . . . . . . . . . . 8
- 3.4. NAS-Port . . . . . . . . . . . . . . . . . . . . . . . . 8
- 3.5. Service-Type . . . . . . . . . . . . . . . . . . . . . . 8
- 3.6. Framed-Protocol. . . . . . . . . . . . . . . . . . . . . 9
- 3.7. Framed-IP-Address, Framed-IP-Netmask . . . . . . . . . . 9
- 3.8. Framed-Routing . . . . . . . . . . . . . . . . . . . . . 9
- 3.9. Filter-ID. . . . . . . . . . . . . . . . . . . . . . . . 9
- 3.10. Framed-MTU . . . . . . . . . . . . . . . . . . . . . . . 9
- 3.11. Framed-Compression . . . . . . . . . . . . . . . . . . . 10
- 3.12. Displayable Messages . . . . . . . . . . . . . . . . . . 10
- 3.13. Callback-Number, Callback-ID . . . . . . . . . . . . . . 10
- 3.14. Framed-Route, Framed-IPv6-Route. . . . . . . . . . . . . 11
- 3.15. State, Class, Proxy-State. . . . . . . . . . . . . . . . 11
- 3.16. Vendor-Specific. . . . . . . . . . . . . . . . . . . . . 11
- 3.17. Session-Timeout. . . . . . . . . . . . . . . . . . . . . 11
- 3.18. Idle-Timeout . . . . . . . . . . . . . . . . . . . . . . 12
- 3.19. Termination-Action . . . . . . . . . . . . . . . . . . . 12
- 3.20. Called-Station-Id. . . . . . . . . . . . . . . . . . . . 12
- 3.21. Calling-Station-Id . . . . . . . . . . . . . . . . . . . 12
- 3.22. NAS-Identifier . . . . . . . . . . . . . . . . . . . . . 12
- 3.23. NAS-Port-Type. . . . . . . . . . . . . . . . . . . . . . 12
- 3.24. Port-Limit . . . . . . . . . . . . . . . . . . . . . . . 13
- 3.25. Password-Retry . . . . . . . . . . . . . . . . . . . . . 13
- 3.26. Connect-Info . . . . . . . . . . . . . . . . . . . . . . 13
- 3.27. EAP-Message. . . . . . . . . . . . . . . . . . . . . . . 13
- 3.28. Message-Authenticator. . . . . . . . . . . . . . . . . . 13
- 3.29. NAS-Port-Id. . . . . . . . . . . . . . . . . . . . . . . 13
- 3.30. Framed-Pool, Framed-IPv6-Pool. . . . . . . . . . . . . . 14
- 3.31. Tunnel Attributes. . . . . . . . . . . . . . . . . . . . 14
- 4. RC4 EAPOL-Key Descriptor . . . . . . . . . . . . . . . . . . . 15
- 5. Security Considerations. . . . . . . . . . . . . . . . . . . . 18
- 5.1. Packet Modification or Forgery . . . . . . . . . . . . . 18
- 5.2. Dictionary Attacks . . . . . . . . . . . . . . . . . . . 19
- 5.3. Known Plaintext Attacks. . . . . . . . . . . . . . . . . 19
- 5.4. Replay . . . . . . . . . . . . . . . . . . . . . . . . . 20
- 5.5. Outcome Mismatches . . . . . . . . . . . . . . . . . . . 20
-
-
-
-Congdon, et al. Informational [Page 2]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- 5.6. 802.11 Integration . . . . . . . . . . . . . . . . . . . 20
- 5.7. Key Management Issues. . . . . . . . . . . . . . . . . . 21
- 6. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 22
- 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22
- 7.1. Normative References . . . . . . . . . . . . . . . . . . 22
- 7.2. Informative References . . . . . . . . . . . . . . . . . 23
- 8. Table of Attributes. . . . . . . . . . . . . . . . . . . . . . 25
- 9. Intellectual Property Statement . . . . . . . . . . . . . . . 28
- 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 28
- 11. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 29
- 12. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 30
-
-1. Introduction
-
- IEEE 802.1X enables authenticated access to IEEE 802 media, including
- Ethernet, Token Ring, and 802.11 wireless LANs. Although Remote
- Authentication Dial In User Service (RADIUS) support is optional
- within IEEE 802.1X, it is expected that many IEEE 802.1X
- Authenticators will function as RADIUS clients.
-
- IEEE 802.1X [IEEE8021X] provides "network port authentication" for
- IEEE 802 [IEEE802] media, including Ethernet [IEEE8023], Token Ring
- and 802.11 [IEEE80211] wireless LANS.
-
- IEEE 802.1X does not require use of a backend Authentication Server,
- and thus can be deployed with stand-alone bridges or Access Points,
- as well as in centrally managed scenarios.
-
- In situations where it is desirable to centrally manage
- authentication, authorization and accounting (AAA) for IEEE 802
- networks, deployment of a backend authentication and accounting
- server is desirable. In such situations, it is expected that IEEE
- 802.1X Authenticators will function as AAA clients.
-
- This document provides suggestions on RADIUS usage by IEEE 802.1X
- Authenticators. Support for any AAA protocol is optional for IEEE
- 802.1X Authenticators, and therefore this specification has been
- incorporated into a non-normative Appendix within the IEEE 802.1X
- specification.
-
-1.1. Terminology
-
- This document uses the following terms:
-
- Access Point (AP)
- A Station that provides access to the distribution services via
- the wireless medium for associated Stations.
-
-
-
-
-Congdon, et al. Informational [Page 3]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- Association
- The service used to establish Access Point/Station mapping and
- enable Station invocation of the distribution system services.
-
- Authenticator
- An Authenticator is an entity that requires authentication from
- the Supplicant. The Authenticator may be connected to the
- Supplicant at the other end of a point-to-point LAN segment or
- 802.11 wireless link.
-
- Authentication Server
- An Authentication Server is an entity that provides an
- Authentication Service to an Authenticator. This service
- verifies, from the credentials provided by the Supplicant, the
- claim of identity made by the Supplicant.
-
- Port Access Entity (PAE)
- The protocol entity associated with a physical or virtual
- (802.11) Port. A given PAE may support the protocol
- functionality associated with the Authenticator, Supplicant or
- both.
-
- Station (STA)
- Any device that contains an IEEE 802.11 conformant medium
- access control (MAC) and physical layer (PHY) interface to the
- wireless medium (WM).
-
- Supplicant
- A Supplicant is an entity that is being authenticated by an
- Authenticator. The Supplicant may be connected to the
- Authenticator at one end of a point-to-point LAN segment or
- 802.11 wireless link.
-
-1.2. Requirements Language
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized. The key
- words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
- "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document
- are to be interpreted as described in [RFC2119].
-
-
-
-
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 4]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-2. RADIUS Accounting Attributes
-
- With a few exceptions, the RADIUS accounting attributes defined in
- [RFC2866], [RFC2867], and [RFC2869] have the same meaning within IEEE
- 802.1X sessions as they do in dialup sessions and therefore no
- additional commentary is needed.
-
- Attributes requiring more discussion include:
-
- Acct-Terminate-Cause
- Acct-Multi-Session-Id
- Acct-Link-Count
-
-2.1. Acct-Terminate-Cause
-
- This attribute indicates how the session was terminated, as described
- in [RFC2866]. [IEEE8021X] defines the following termination cause
- values, which are shown with their RADIUS equivalents in the table on
- the next page.
-
- IEEE 802.1X RADIUS
- dot1xAuthSessionTerminateCause Acct-Terminate-Cause
- Value Value
- ------------- --------------------
- SupplicantLogoff(1) User Request (1)
- portFailure(2) Lost Carrier (2)
- SupplicantRestart(3) Supplicant Restart (19)
- reauthFailed(4) Reauthentication Failure (20)
- authControlForceUnauth(5) Admin Reset (6)
- portReInit(6) Port Reinitialized (21)
- portAdminDisabled(7) Port Administratively Disabled (22)
- notTerminatedYet(999) N/A
-
- When using this attribute, the User Request (1) termination cause
- corresponds to the situation in which the session terminated due to
- an EAPOL-Logoff received from the Supplicant. When a session is
- moved due to roaming, the EAPOL state machines will treat this as a
- Supplicant Logoff.
-
- A Lost Carrier (2) termination cause indicates session termination
- due to loss of physical connectivity for reasons other than roaming
- between Access Points. For example, if the Supplicant disconnects a
- point-to-point LAN connection, or moves out of range of an Access
- Point, this termination cause is used. Lost Carrier (2) therefore
- equates to a Port Disabled condition in the EAPOL state machines.
-
- A Supplicant Restart (19) termination cause indicates
- re-initialization of the Supplicant state machines.
-
-
-
-Congdon, et al. Informational [Page 5]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- A Reauthentication Failure (20) termination cause indicates that a
- previously authenticated Supplicant has failed to re-authenticate
- successfully following expiry of the re-authentication timer or
- explicit re-authentication request by management action.
-
- Within [IEEE80211], periodic re-authentication may be useful in
- preventing reuse of an initialization vector with a given key. Since
- successful re-authentication does not result in termination of the
- session, accounting packets are not sent as a result of
- re-authentication unless the status of the session changes. For
- example:
-
- a. The session is terminated due to re-authentication failure. In
- this case the Reauthentication Failure (20) termination cause is
- used.
-
- b. The authorizations are changed as a result of a successful
- re-authentication. In this case, the Service Unavailable (15)
- termination cause is used. For accounting purposes, the portion
- of the session after the authorization change is treated as a
- separate session.
-
- Where IEEE 802.1X authentication occurs prior to association,
- accounting packets are not sent until an association occurs.
-
- An Admin Reset (6) termination cause indicates that the Port has been
- administratively forced into the unauthorized state.
-
- A Port Reinitialized (21) termination cause indicates that the Port's
- MAC has been reinitialized.
-
- A Port Administratively Disabled (22) termination cause indicates
- that the Port has been administratively disabled.
-
-2.2. Acct-Multi-Session-Id
-
- The purpose of this attribute is to make it possible to link together
- multiple related sessions. While [IEEE8021X] does not act on
- aggregated ports, it is possible for a Supplicant roaming between
- Access Points to cause multiple RADIUS accounting packets to be sent
- by different Access Points.
-
- Where supported by the Access Points, the Acct-Multi-Session-Id
- attribute can be used to link together the multiple related sessions
- of a roaming Supplicant. In such a situation, if the session context
- is transferred between Access Points, accounting packets MAY be sent
- without a corresponding authentication and authorization exchange,
-
-
-
-
-Congdon, et al. Informational [Page 6]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- provided that Association has occurred. However, in such a situation
- it is assumed that the Acct-Multi-Session-Id is transferred between
- the Access Points as part of the Inter-Access Point Protocol (IAPP).
-
- If the Acct-Multi-Session-Id were not unique between Access Points,
- then it is possible that the chosen Acct-Multi-Session-Id will
- overlap with an existing value allocated on that Access Point, and
- the Accounting Server would therefore be unable to distinguish a
- roaming session from a multi-link session.
-
- As a result, the Acct-Multi-Session-Id attribute is unique among all
- the bridges or Access Points, Supplicants and sessions. In order to
- provide this uniqueness, it is suggested that the Acct-Multi-
- Session-Id be of the form:
-
- Original AP MAC Address | Supplicant MAC Address | NTP Timestamp
-
- Here "|" represents concatenation, the original AP MAC Address is the
- MAC address of the bridge or Access Point at which the session
- started, and the 64-bit NTP timestamp indicates the beginning of the
- original session. In order to provide for consistency of the Acct-
- Multi-Session-Id between roaming sessions, the Acct-Multi-Session-Id
- may be moved between Access Points as part of IAPP or another handoff
- scheme.
-
- The use of an Acct-Multi-Session-Id of this form guarantees
- uniqueness among all Access Points, Supplicants and sessions. Since
- the NTP timestamp does not wrap on reboot, there is no possibility
- that a rebooted Access Point could choose an Acct-Multi-Session-Id
- that could be confused with that of a previous session.
-
- Since the Acct-Multi-Session-Id is of type String as defined in
- [RFC2866], for use with IEEE 802.1X, it is encoded as an ASCII string
- of Hex digits. Example: "00-10-A4-23-19-C0-00-12-B2-
- 14-23-DE-AF-23-83-C0-76-B8-44-E8"
-
-2.3. Acct-Link-Count
-
- The Acct-Link-Count attribute may be used to account for the number
- of ports that have been aggregated.
-
-3. RADIUS Authentication
-
- This section describes how attributes defined in [RFC2865],
- [RFC2867], [RFC2868], [RFC2869], [RFC3162] and [RFC3579] are used in
- IEEE 802.1X authentication.
-
-
-
-
-
-Congdon, et al. Informational [Page 7]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-3.1. User-Name
-
- In IEEE 802.1X, the Supplicant typically provides its identity via an
- EAP-Response/Identity message. Where available, the Supplicant
- identity is included in the User-Name attribute, and included in the
- RADIUS Access-Request and Access-Reply messages as specified in
- [RFC2865] and [RFC3579].
-
- Alternatively, as discussed in [RFC3579] Section 2.1., the User-Name
- attribute may contain the Calling-Station-ID value, which is set to
- the Supplicant MAC address.
-
-3.2. User-Password, CHAP-Password, CHAP-Challenge
-
- Since IEEE 802.1X does not support PAP or CHAP authentication, the
- User-Password, CHAP-Password or CHAP-Challenge attributes are not
- used by IEEE 802.1X Authenticators acting as RADIUS clients.
-
-3.3. NAS-IP-Address, NAS-IPv6-Address
-
- For use with IEEE 802.1X, the NAS-IP-Address contains the IPv4
- address of the bridge or Access Point acting as an Authenticator, and
- the NAS-IPv6-Address contains the IPv6 address. If the IEEE 802.1X
- Authenticator has more than one interface, it may be desirable to use
- a loopback address for this purpose so that the Authenticator will
- still be reachable even if one of the interfaces were to fail.
-
-3.4. NAS-Port
-
- For use with IEEE 802.1X the NAS-Port will contain the port number of
- the bridge, if this is available. While an Access Point does not
- have physical ports, a unique "association ID" is assigned to every
- mobile Station upon a successful association exchange. As a result,
- for an Access Point, if the association exchange has been completed
- prior to authentication, the NAS-Port attribute will contain the
- association ID, which is a 16-bit unsigned integer. Where IEEE
- 802.1X authentication occurs prior to association, a unique NAS-Port
- value may not be available.
-
-3.5. Service-Type
-
- For use with IEEE 802.1X, the Framed (2), Authenticate Only (8), and
- Call Check (10) values are most commonly used.
-
- A Service-Type of Framed indicates that appropriate 802 framing
- should be used for the connection. A Service-Type of Authenticate
- Only (8) indicates that no authorization information needs to be
- returned in the Access-Accept. As described in [RFC2865], a
-
-
-
-Congdon, et al. Informational [Page 8]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- Service-Type of Call Check is included in an Access-Request packet to
- request that the RADIUS server accept or reject the connection
- attempt, typically based on the Called-Station-ID (set to the bridge
- or Access Point MAC address) or Calling-Station-ID attributes (set to
- the Supplicant MAC address). As noted in [RFC2865], it is
- recommended that in this case, the User-Name attribute be given the
- value of Calling-Station-Id.
-
-3.6. Framed-Protocol
-
- Since there is no value for IEEE 802 media, the Framed-Protocol
- attribute is not used by IEEE 802.1X Authenticators.
-
-3.7. Framed-IP-Address, Framed-IP-Netmask
-
- IEEE 802.1X does not provide a mechanism for IP address assignment.
- Therefore the Framed-IP-Address and Framed-IP-Netmask attributes can
- only be used by IEEE 802.1X Authenticators that support IP address
- assignment mechanisms. Typically this capability is supported by
- layer 3 devices.
-
-3.8. Framed-Routing
-
- The Framed-Routing attribute indicates the routing method for the
- Supplicant. It is therefore only relevant for IEEE 802.1X
- Authenticators that act as layer 3 devices, and cannot be used by a
- bridge or Access Point.
-
-3.9. Filter-ID
-
- This attribute indicates the name of the filter list to be applied to
- the Supplicant's session. For use with an IEEE 802.1X Authenticator,
- it may be used to indicate either layer 2 or layer 3 filters. Layer
- 3 filters are typically only supported on IEEE 802.1X Authenticators
- that act as layer 3 devices.
-
-3.10. Framed-MTU
-
- This attribute indicates the maximum size of an IP packet that may be
- transmitted over the wire between the Supplicant and the
- Authenticator. IEEE 802.1X Authenticators set this to the value
- corresponding to the relevant 802 medium, and include it in the
- RADIUS Access-Request. The RADIUS server may send an EAP packet as
- large as Framed-MTU minus four (4) octets, taking into account the
- additional overhead for the IEEE 802.1X Version (1), Type (1) and
- Body Length (2) fields. For EAP over IEEE 802 media, the Framed-MTU
- values (which do not include LLC/SNAP overhead) and maximum frame
- length values (not including the preamble) are as follows:
-
-
-
-Congdon, et al. Informational [Page 9]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- Maximum Frame
- Media Framed-MTU Length
- ========= =============== ==============
- Ethernet 1500 1522
- 802.3 1500 1522
- 802.4 8174 8193
- 802.5 (4 Mbps) 4528 4550
- 802.5 (16 Mbps) 18173 18200
- 802.5 (100 Mb/s) 18173 18200
- 802.6 9191 9240
- 802.9a 1500 1518
- 802.11 2304 2346
- 802.12 (Ethernet) 1500 1518
- 802.12 (Token Ring) 4502 4528
- FDDI 4479 4500
-
- NOTE - the Framed-MTU size for IEEE 802.11 media may change as a
- result of ongoing work being undertaken in the IEEE 802.11 Working
- Group. Since some 802.11 stations cannot handle an MTU larger than
- 1500 octets, it is recommended that RADIUS servers encountering a
- NAS-Port-Type value of 802.11 send EAP packets no larger than 1496
- octets.
-
-3.11. Framed-Compression
-
- [IEEE8021X] does not include compression support. Therefore this
- attribute is not understood by [IEEE8021X] Authenticators.
-
-3.12. Displayable Messages
-
- The Reply-Message attribute, defined in section 5.18 of [RFC2865],
- indicates text which may be displayed to the user. This is similar
- in concept to the EAP Notification Type, defined in [RFC2284]. As
- noted in [RFC3579], Section 2.6.5, when sending a displayable message
- to an [IEEE8021X] Authenticator, displayable messages are best sent
- within EAP-Message/EAP-Request/Notification attribute(s), and not
- within Reply-Message attribute(s).
-
-3.13. Callback-Number, Callback-ID
-
- These attributes are not understood by IEEE 802.1X Authenticators.
-
-
-
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 10]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-3.14. Framed-Route, Framed-IPv6-Route
-
- The Framed-Route and Framed-IPv6-Route attributes provide routes that
- are to be configured for the Supplicant. These attributes are
- therefore only relevant for IEEE 802.1X Authenticators that act as
- layer 3 devices, and cannot be understood by a bridge or Access
- Point.
-
-3.15. State, Class, Proxy-State
-
- These attributes are used for the same purposes as described in
- [RFC2865].
-
-3.16. Vendor-Specific
-
- Vendor-specific attributes are used for the same purposes as
- described in [RFC2865]. The MS-MPPE-Send-Key and MS-MPPE-Recv-Key
- attributes, described in section 2.4 of [RFC2548], MAY be used to
- encrypt and authenticate the RC4 EAPOL-Key descriptor [IEEE8021X,
- Section 7.6]. Examples of the derivation of the MS-MPPE-Send-Key and
- MS-MPPE-Recv-Key attributes from the master key negotiated by an EAP
- method are given in [RFC2716]. Details of the EAPOL-Key descriptor
- are provided in Section 4.
-
-3.17. Session-Timeout
-
- When sent along in an Access-Accept without a Termination-Action
- attribute or with a Termination-Action attribute set to Default, the
- Session-Timeout attribute specifies the maximum number of seconds of
- service provided prior to session termination.
-
- When sent in an Access-Accept along with a Termination-Action value
- of RADIUS-Request, the Session-Timeout attribute specifies the
- maximum number of seconds of service provided prior to re-
- authentication. In this case, the Session-Timeout attribute is used
- to load the reAuthPeriod constant within the Reauthentication Timer
- state machine of 802.1X. When sent with a Termination-Action value
- of RADIUS-Request, a Session-Timeout value of zero indicates the
- desire to perform another authentication (possibly of a different
- type) immediately after the first authentication has successfully
- completed.
-
- When sent in an Access-Challenge, this attribute represents the
- maximum number of seconds that an IEEE 802.1X Authenticator should
- wait for an EAP-Response before retransmitting. In this case, the
- Session-Timeout attribute is used to load the suppTimeout constant
- within the backend state machine of IEEE 802.1X.
-
-
-
-
-Congdon, et al. Informational [Page 11]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-3.18. Idle-Timeout
-
- The Idle-Timeout attribute is described in [RFC2865]. For IEEE 802
- media other than 802.11 the media are always on. As a result the
- Idle-Timeout attribute is typically only used with wireless media
- such as IEEE 802.11. It is possible for a wireless device to wander
- out of range of all Access Points. In this case, the Idle-Timeout
- attribute indicates the maximum time that a wireless device may
- remain idle.
-
-3.19. Termination-Action
-
- This attribute indicates what action should be taken when the service
- is completed. The value RADIUS-Request (1) indicates that re-
- authentication should occur on expiration of the Session-Time. The
- value Default (0) indicates that the session should terminate.
-
-3.20. Called-Station-Id
-
- For IEEE 802.1X Authenticators, this attribute is used to store the
- bridge or Access Point MAC address in ASCII format (upper case only),
- with octet values separated by a "-". Example: "00-10-A4-23-19-C0".
- In IEEE 802.11, where the SSID is known, it SHOULD be appended to the
- Access Point MAC address, separated from the MAC address with a ":".
- Example "00-10-A4-23-19-C0:AP1".
-
-3.21. Calling-Station-Id
-
- For IEEE 802.1X Authenticators, this attribute is used to store the
- Supplicant MAC address in ASCII format (upper case only), with octet
- values separated by a "-". Example: "00-10-A4-23-19-C0".
-
-3.22. NAS-Identifier
-
- This attribute contains a string identifying the IEEE 802.1X
- Authenticator originating the Access-Request.
-
-3.23. NAS-Port-Type
-
- For use with IEEE 802.1X, NAS-Port-Type values of Ethernet (15)
- Wireless - IEEE 802.11 (19), Token Ring (20) and FDDI (21) may be
- used.
-
-
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 12]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-3.24. Port-Limit
-
- This attribute has no meaning when sent to an [IEEE8021X]
- Authenticator.
-
-3.25. Password-Retry
-
- In IEEE 802.1X, the Authenticator always transitions to the HELD
- state after an authentication failure. Thus this attribute does not
- make sense for IEEE 802.1X.
-
-3.26. Connect-Info
-
- This attribute is sent by a bridge or Access Point to indicate the
- nature of the Supplicant's connection. When sent in the Access-
- Request it is recommended that this attribute contain information on
- the speed of the Supplicant's connection. For 802.11, the following
- format is recommended: "CONNECT 11Mbps 802.11b". If sent in the
- Accounting STOP, this attribute may be used to summarize statistics
- relating to session quality. For example, in IEEE 802.11, the
- Connect-Info attribute may contain information on the number of link
- layer retransmissions. The exact format of this attribute is
- implementation specific.
-
-3.27. EAP-Message
-
- Since IEEE 802.1X provides for encapsulation of EAP as described in
- [RFC2284] and [IEEE8021X], the EAP-Message attribute defined in
- [RFC3579] is used to encapsulate EAP packets for transmission from
- the IEEE 802.1X Authenticator to the Authentication Server. [RFC3579]
- Section 2.2. describes how the Authentication Server handles invalid
- EAP packets passed to it by the Authenticator.
-
-3.28. Message-Authenticator
-
- As noted in [RFC3579] Section 3.1., the Message-Authenticator
- attribute MUST be used to protect packets within a RADIUS/EAP
- conversation.
-
-3.29. NAS-Port-Id
-
- This attribute is used to identify the IEEE 802.1X Authenticator port
- which authenticates the Supplicant. The NAS-Port-Id differs from the
- NAS-Port in that it is a string of variable length whereas the NAS-
- Port is a 4 octet value.
-
-
-
-
-
-
-Congdon, et al. Informational [Page 13]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-3.30. Framed-Pool, Framed-IPv6-Pool
-
- IEEE 802.1X does not provide a mechanism for IP address assignment.
- Therefore the Framed-Pool and Framed-IPv6-Pool attributes can only be
- used by IEEE 802.1X Authenticators that support IP address assignment
- mechanisms. Typically this capability is supported by layer 3
- devices.
-
-3.31. Tunnel Attributes
-
- Reference [RFC2868] defines RADIUS tunnel attributes used for
- authentication and authorization, and [RFC2867] defines tunnel
- attributes used for accounting. Where the IEEE 802.1X Authenticator
- supports tunneling, a compulsory tunnel may be set up for the
- Supplicant as a result of the authentication.
-
- In particular, it may be desirable to allow a port to be placed into
- a particular Virtual LAN (VLAN), defined in [IEEE8021Q], based on the
- result of the authentication. This can be used, for example, to
- allow a wireless host to remain on the same VLAN as it moves within a
- campus network.
-
- The RADIUS server typically indicates the desired VLAN by including
- tunnel attributes within the Access-Accept. However, the IEEE 802.1X
- Authenticator may also provide a hint as to the VLAN to be assigned
- to the Supplicant by including Tunnel attributes within the Access-
- Request.
-
- For use in VLAN assignment, the following tunnel attributes are used:
-
- Tunnel-Type=VLAN (13)
- Tunnel-Medium-Type=802
- Tunnel-Private-Group-ID=VLANID
-
- Note that the VLANID is 12-bits, taking a value between 1 and 4094,
- inclusive. Since the Tunnel-Private-Group-ID is of type String as
- defined in [RFC2868], for use with IEEE 802.1X, the VLANID integer
- value is encoded as a string.
-
- When Tunnel attributes are sent, it is necessary to fill in the Tag
- field. As noted in [RFC2868], section 3.1:
-
- The Tag field is one octet in length and is intended to provide a
- means of grouping attributes in the same packet which refer to the
- same tunnel. Valid values for this field are 0x01 through 0x1F,
- inclusive. If the Tag field is unused, it MUST be zero (0x00).
-
-
-
-
-
-Congdon, et al. Informational [Page 14]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- For use with Tunnel-Client-Endpoint, Tunnel-Server-Endpoint, Tunnel-
- Private-Group-ID, Tunnel-Assignment-ID, Tunnel-Client-Auth-ID or
- Tunnel-Server-Auth-ID attributes (but not Tunnel-Type, Tunnel-
- Medium-Type, Tunnel-Password, or Tunnel-Preference), a tag field of
- greater than 0x1F is interpreted as the first octet of the following
- field.
-
- Unless alternative tunnel types are provided, (e.g. for IEEE 802.1X
- Authenticators that may support tunneling but not VLANs), it is only
- necessary for tunnel attributes to specify a single tunnel. As a
- result, where it is only desired to specify the VLANID, the tag field
- SHOULD be set to zero (0x00) in all tunnel attributes. Where
- alternative tunnel types are to be provided, tag values between 0x01
- and 0x1F SHOULD be chosen.
-
-4. RC4 EAPOL-Key Frame
-
- The RC4 EAPOL-Key frame is created and transmitted by the
- Authenticator in order to provide media specific key information.
- For example, within 802.11 the RC4 EAPOL-Key frame can be used to
- distribute multicast/broadcast ("default") keys, or unicast ("key
- mapping") keys. The "default" key is the same for all Stations
- within a broadcast domain.
-
- The RC4 EAPOL-Key frame is not acknowledged and therefore the
- Authenticator does not know whether the Supplicant has received it.
- If it is lost, then the Supplicant and Authenticator will not have
- the same keying material, and communication will fail. If this
- occurs, the problem is typically addressed by re-running the
- authentication.
-
- The RC4 EAPOL-Key frame is sent from the Authenticator to the
- Supplicant in order to provision the "default" key, and subsequently
- in order to refresh the "default" key. It may also be used to
- refresh the key-mapping key. Rekey is typically only required with
- weak ciphersuites such as WEP, defined in [IEEE80211].
-
- Where keys are required, an EAP method that derives keys is typically
- selected. Therefore the initial "key mapping" keys can be derived
- from EAP keying material, without requiring the Authenticator to send
- an RC4 EAPOL-Key frame to the Supplicant. An example of how EAP
- keying material can be derived and used is presented in [RFC2716].
-
-
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 15]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- While the RC4 EAPOL-Key frame is defined in [IEEE8021X], a more
- complete description is provided on the next page.
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Version | Packet Type | Packet Body Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Type | Key Length |Replay Counter...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Replay Counter...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Replay Counter | Key IV...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key IV...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key IV...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key IV...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key IV... |F| Key Index |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key Signature...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key Signature...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key Signature...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key Signature...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Version
- The Version field is one octet. For IEEE 802.1X, it contains the
- value 0x01.
-
- Packet Type
- The Packet Type field is one octet, and determines the type of
- packet being transmitted. For an EAPOL-Key Descriptor, the Packet
- Type field contains 0x03.
-
- Packet Body Length
- The Packet Body Length is two octets, and contains the length of
- the EAPOL-Key descriptor in octets, not including the Version,
- Packet Type and Packet Body Length fields.
-
-
-
-
-
-Congdon, et al. Informational [Page 16]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- Type
- The Type field is a single octet. The Key descriptor is defined
- differently for each Type; this specification documents only the
- RC4 Key Descriptor (Type = 0x01).
-
- Key Length
- The Key Length field is two octets. If Packet Body Length = 44 +
- Key Length, then the Key Field contains the key in encrypted form,
- of length Key Length. This is 5 octets (40 bits) for WEP, and 13
- octets (104 bits) for WEP-128. If Packet Body Length = 44, then
- the Key field is absent, and Key Length represents the number of
- least significant octets from the MS-MPPE-Send-Key attribute
- [RFC2548] to be used as the keying material. Note that the MS-
- MPPE-Send-Key and MS-MPPE-Recv-Key attributes are defined from the
- point of view of the Authenticator. From the Supplicant point of
- reference, the terms are reversed. Thus the MS-MPPE-Recv-Key on
- the Supplicant corresponds to the MS-MPPE-Send-Key on the
- Authenticator, and the MS-MPPE-Send-Key on the Supplicant
- corresponds to the MS-MPPE-Recv-Key on the Authenticator.
-
- Replay Counter
- The Replay Counter field is 8 octets. It does not repeat within
- the life of the keying material used to encrypt the Key field and
- compute the Key Signature field. A 64-bit NTP timestamp MAY be
- used as the Replay Counter.
-
- Key IV
- The Key IV field is 16 octets and includes a 128-bit
- cryptographically random number.
-
- F
- The Key flag (F) is a single bit, describing the type of key that
- is included in the Key field. Values are:
-
- 0 = for broadcast (default key)
- 1 = for unicast (key mapping key)
-
- Key Index
- The Key Index is 7 bits.
-
- Key Signature
- The Key Signature field is 16 octets. It contains an HMAC-MD5
- message integrity check computed over the EAPOL-Key descriptor,
- starting from the Version field, with the Key field filled in if
- present, but with the Key Signature field set to zero. For the
- computation, the 32 octet (256 bit) MS-MPPE-Send-Key [RFC2548] is
- used as the HMAC-MD5 key.
-
-
-
-
-Congdon, et al. Informational [Page 17]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- Key
- If Packet Body Length = 44 + Key Length, then the Key Field
- contains the key in encrypted form, of length Key Length. If
- Packet Body Length = 44, then the Key field is absent, and the
- least significant Key Length octets from the MS-MPPE-Send-Key
- attribute is used as the keying material. Where the Key field is
- encrypted using RC4, the RC4 encryption key used to encrypt this
- field is formed by concatenating the 16 octet (128 bit) Key-IV
- field with the 32 octet MS-MPPE-Recv-Key attribute. This yields a
- 48 octet RC4 key (384 bits).
-
-5. Security Considerations
-
- Since this document describes the use of RADIUS for purposes of
- authentication, authorization, and accounting in IEEE 802.1X-enabled
- networks, it is vulnerable to all of the threats that are present in
- other RADIUS applications. For a discussion of these threats, see
- [RFC2607], [RFC2865], [RFC3162], [RFC3579], and [RFC3576].
-
- Vulnerabilities include:
-
- Packet modification or forgery
- Dictionary attacks
- Known plaintext attacks
- Replay
- Outcome mismatches
- 802.11 integration
- Key management issues
-
-5.1. Packet Modification or Forgery
-
- RADIUS, defined in [RFC2865], does not require all Access-Requests to
- be authenticated or integrity protected. However, IEEE 802.1X is
- based on EAP. As described in [3579], Section 3.1.:
-
- The Message-Authenticator attribute MUST be used to protect all
- Access-Request, Access-Challenge, Access-Accept, and Access-Reject
- packets containing an EAP-Message attribute.
-
- As a result, when used with IEEE 802.1X, all RADIUS packets MUST be
- authenticated and integrity protected. In addition, as described in
- [3579], Section 4.2.:
-
- To address the security vulnerabilities of RADIUS/EAP,
- implementations of this specification SHOULD support IPsec
- [RFC2401] along with IKE [RFC2409] for key management. IPsec ESP
- [RFC2406] with non-null transform SHOULD be supported, and IPsec
- ESP with a non-null encryption transform and authentication
-
-
-
-Congdon, et al. Informational [Page 18]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- support SHOULD be used to provide per-packet confidentiality,
- authentication, integrity and replay protection. IKE SHOULD be
- used for key management.
-
-5.2. Dictionary Attacks
-
- As discussed in [RFC3579] Section 4.3.3., the RADIUS shared secret is
- vulnerable to offline dictionary attack, based on capture of the
- Response Authenticator or Message-Authenticator attribute. In order
- to decrease the level of vulnerability, [RFC2865], Section 3
- recommends:
-
- The secret (password shared between the client and the RADIUS
- server) SHOULD be at least as large and unguessable as a well-
- chosen password. It is preferred that the secret be at least 16
- octets.
-
- In addition, the risk of an offline dictionary attack can be further
- mitigated by employing IPsec ESP with a non-null transform in order
- to encrypt the RADIUS conversation, as described in [RFC3579],
- Section 4.2.
-
-5.3. Known Plaintext Attacks
-
- Since IEEE 802.1X is based on EAP, which does not support PAP, the
- RADIUS User-Password attribute is not used to carry hidden user
- passwords. The hiding mechanism utilizes MD5, defined in [RFC1321],
- in order to generate a key stream based on the RADIUS shared secret
- and the Request Authenticator. Where PAP is in use, it is possible
- to collect key streams corresponding to a given Request Authenticator
- value, by capturing RADIUS conversations corresponding to a PAP
- authentication attempt using a known password. Since the User-
- Password is known, the key stream corresponding to a given Request
- Authenticator can be determined and stored.
-
- The vulnerability is described in detail in [RFC3579], Section 4.3.4.
- Even though IEEE 802.1X Authenticators do not support PAP
- authentication, a security vulnerability can still exist where the
- same RADIUS shared secret is used for hiding User-Password as well as
- other attributes. This can occur, for example, if the same RADIUS
- proxy handles authentication requests for both IEEE 802.1X (which may
- hide the Tunnel-Password, MS-MPPE-Send-Key and MS-MPPE-Recv-Key
- attributes) and GPRS (which may hide the User-Password attribute).
-
- The threat can be mitigated by protecting RADIUS with IPsec ESP with
- a non-null transform, as described in [RFC3579], Section 4.2. In
- addition, the same RADIUS shared secret MUST NOT be used for both
- IEEE 802.1X authentication and PAP authentication.
-
-
-
-Congdon, et al. Informational [Page 19]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-5.4. Replay
-
- As noted in [RFC3579] Section 4.3.5., the RADIUS protocol provides
- only limited support for replay protection. Replay protection for
- RADIUS authentication and accounting can be provided by enabling
- IPsec replay protection with RADIUS, as described in [RFC3579],
- Section 4.2.
-
- As with the Request Authenticator, for use with IEEE 802.1X
- Authenticators, the Acct-Session-Id SHOULD be globally and temporally
- unique.
-
-5.5. Outcome Mismatches
-
- [RFC3579] Section 2.6.3. discusses the issues that arise when the EAP
- packet encapsulated in an EAP-Message attribute does not agree with
- the RADIUS Packet Type. For example, an EAP Success packet might be
- encapsulated within an Access-Reject; an EAP Failure might be sent
- within an Access-Accept; or an EAP Success or Failure might be sent
- within an Access-Challenge.
-
- As described in [RFC3579] Section 2.6.3., these conflicting messages
- are likely to cause confusion. To ensure that access decisions made
- by IEEE 802.1X Authenticators conform to the wishes of the RADIUS
- server, it is necessary for the Authenticator to make the decision
- solely based on the authentication result (Access-Accept/Reject) and
- not based on the contents of EAP-Message attributes, if present.
-
-5.6. 802.11 Integration
-
- [IEEE8021X] was developed for use on wired IEEE 802 networks such as
- Ethernet, and therefore does not describe how to securely adapt IEEE
- 802.1X for use with 802.11. This is left to an enhanced security
- specification under development within IEEE 802.11.
-
- For example, [IEEE8021X] does not specify whether authentication
- occurs prior to, or after association, nor how the derived keys are
- used within various ciphersuites. It also does not specify
- ciphersuites addressing the vulnerabilities discovered in WEP,
- described in [Berkeley], [Arbaugh], [Fluhrer], and [Stubbl].
- [IEEE8021X] only defines an authentication framework, leaving the
- definition of the authentication methods to other documents, such as
- [RFC2716].
-
- Since [IEEE8021X] does not address 802.11 integration issues,
- implementors are strongly advised to consult additional IEEE 802.11
- security specifications for guidance on how to adapt IEEE 802.1X for
- use with 802.11. For example, it is likely that the IEEE 802.11
-
-
-
-Congdon, et al. Informational [Page 20]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- enhanced security specification will define its own IEEE 802.11 key
- hierarchy as well as new EAPOL-Key descriptors.
-
-5.7. Key Management Issues
-
- The EAPOL-Key descriptor described in Section 4. is likely to be
- deprecated in the future, when the IEEE 802.11 enhanced security
- group completes its work. Known security issues include:
-
- [1] Default key-only support. IEEE 802.1X enables the derivation of
- per-Station unicast keys, known in [IEEE80211] as "key mapping
- keys." Keys used to encrypt multicast/broadcast traffic are
- known as "default keys". However, in some 802.11
- implementations, the unicast keys, derived as part of the EAP
- authentication process, are used solely in order to encrypt,
- authenticate and integrity protect the EAPOL-Key descriptor, as
- described in Section 4. These implementations only support use
- of default keys (ordinarily only used with multicast/broadcast
- traffic) to secure all traffic, unicast or multicast/broadcast,
- resulting in inherent security weaknesses.
-
- Where per-Station key-mapping keys (e.g. unicast keys) are
- unsupported, any Station possessing the default key can decrypt
- traffic from other Stations or impersonate them. When used
- along with a weak cipher (e.g. WEP), implementations supporting
- only default keys provide more material for attacks such as
- those described in [Fluhrer] and [Stubbl]. If in addition, the
- default key is not refreshed periodically, IEEE 802.1X dynamic
- key derivation provides little or no security benefit. For an
- understanding of the issues with WEP, see [Berkeley], [Arbaugh],
- [Fluhrer], and [Stubbl].
-
- [2] Reuse of keying material. The EAPOL-Key descriptor specified in
- section 4 uses the same keying material (MS-MPPE-Recv-Key) both
- to encrypt the Key field within the EAPOL-Key descriptor, and to
- encrypt data passed between the Station and Access Point.
- Multi-purpose keying material is frowned upon, since multiple
- uses can leak information helpful to an attacker.
-
- [3] Weak algorithms. The algorithm used to encrypt the Key field
- within the EAPOL-Key descriptor is similar to the algorithm used
- in WEP, and as a result, shares some of the same weaknesses. As
- with WEP, the RC4 stream cipher is used to encrypt the key. As
- input to the RC4 engine, the IV and key are concatenated rather
- than being combined within a mixing function. As with WEP, the
- IV is not a counter, and therefore there is little protection
- against reuse.
-
-
-
-
-Congdon, et al. Informational [Page 21]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- As a result of these vulnerabilities, implementors intending to use
- the EAPOL-Key descriptor described in this document are urged to
- consult the 802.11 enhanced security specification for a more secure
- alternative. It is also advisable to consult the evolving literature
- on WEP vulnerabilities, in order to better understand the risks, as
- well as to obtain guidance on setting an appropriate re-keying
- interval.
-
-6. IANA Considerations
-
- This specification does not create any RADIUS attributes nor any new
- number spaces for IANA administration. However, it does require
- assignment of new values to existing RADIUS attributes. These
- include:
-
- Attribute Values Required
- ========= ===============
- NAS-Port-Type Token-Ring (20), FDDI (21)
- Tunnel-Type VLAN (13)
- Acct-Terminate-Cause Supplicant Restart (19)
- Reauthentication Failure (20)
- Port Reinitialized (21)
- Port Administratively Disabled (22)
-
-7. References
-
-7.1. Normative References
-
- [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC
- 1321, April 1992.
-
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
- Requirement Levels", BCP 14, RFC 2119, March 1997.
-
- [RFC2284] Blunk, L. and J. Vollbrecht, "PPP Extensible
- Authentication Protocol (EAP)", RFC 2284, March 1998.
-
- [RFC2865] Rigney, C., Willens, S., Rubens, A. and W. Simpson,
- "Remote Authentication Dial In User Service (RADIUS)",
- RFC 2865, June 2000.
-
- [RFC2866] Rigney, C., "RADIUS Accounting", RFC 2866, June 2000.
-
- [RFC2867] Zorn, G., Aboba, B. and D. Mitton, "RADIUS Accounting
- Modifications for Tunnel Protocol Support", RFC 2867,
- June 2000.
-
-
-
-
-
-Congdon, et al. Informational [Page 22]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- [RFC2868] Zorn, G., Leifer, D., Rubens, A., Shriver, J.,
- Holdrege, M. and I. Goyret, "RADIUS Attributes for
- Tunnel Protocol Support", RFC 2868, June 2000.
-
- [RFC2869] Rigney, C., Willats, W. and P. Calhoun, "RADIUS
- Extensions", RFC 2869, June 2000.
-
- [RFC3162] Aboba, B., Zorn, G. and D. Mitton, "RADIUS and IPv6",
- RFC 3162, August 2001.
-
- [RFC3280] Housley, R., Polk, W., Ford, W. and D. Solo, "Internet
- X.509 Public Key Infrastructure Certificate and
- Certificate Revocation List (CRL) Profile", RFC 3280,
- April 2002.
-
- [RFC3576] Chiba, M., Dommety, G., Eklund, M., Mitton, D. and B.
- Aboba, "Dynamic Authorization Extensions to Remote
- Authentication Dial In User Service (RADIUS)", RFC
- 3576, July 2003.
-
- [RFC3579] Aboba, B. and P. Calhoun, "RADIUS (Remote
- Authentication Dial In User Service) Support For
- Extensible Authentication Protocol (EAP)", RFC 3579,
- September 2003.
-
- [IEEE8021X] IEEE Standards for Local and Metropolitan Area
- Networks: Port based Network Access Control, IEEE Std
- 802.1X-2001, June 2001.
-
-7.2. Informative References
-
- [RFC2104] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC:
- Keyed-Hashing for Message Authentication", RFC 2104,
- February 1997.
-
- [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing
- an IANA Considerations Section in RFCs", BCP 26, RFC
- 2434, October 1998.
-
- [RFC2548] Zorn, G., "Microsoft Vendor-specific RADIUS
- Attributes", RFC 2548, March 1999.
-
- [RFC2607] Aboba, B. and J. Vollbrecht, "Proxy Chaining and
- Policy Implementation in Roaming", RFC 2607, June
- 1999.
-
- [RFC2716] Aboba, B. and D. Simon, "PPP EAP TLS Authentication
- Protocol", RFC 2716, October 1999.
-
-
-
-Congdon, et al. Informational [Page 23]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- [MD5Attack] Dobbertin, H., "The Status of MD5 After a Recent
- Attack." CryptoBytes Vol.2 No.2, Summer 1996.
-
- [IEEE802] IEEE Standards for Local and Metropolitan Area
- Networks: Overview and Architecture, ANSI/IEEE Std
- 802, 1990.
-
- [IEEE8021Q] IEEE Standards for Local and Metropolitan Area
- Networks: Draft Standard for Virtual Bridged Local
- Area Networks, P802.1Q, January 1998.
-
- [IEEE8023] ISO/IEC 8802-3 Information technology -
- Telecommunications and information exchange between
- systems - Local and metropolitan area networks -
- Common specifications - Part 3: Carrier Sense
- Multiple Access with Collision Detection (CSMA/CD)
- Access Method and Physical Layer Specifications, (also
- ANSI/IEEE Std 802.3- 1996), 1996.
-
- [IEEE80211] Information technology - Telecommunications and
- information exchange between systems - Local and
- metropolitan area networks - Specific Requirements
- Part 11: Wireless LAN Medium Access Control (MAC) and
- Physical Layer (PHY) Specifications, IEEE Std.
- 802.11-1999, 1999.
-
- [Berkeley] Borisov, N., Goldberg, I. and D. Wagner, "Intercepting
- Mobile Communications: The Insecurity of 802.11", ACM
- SIGMOBILE, Seventh Annual International Conference on
- Mobile Computing and Networking, July 2001, Rome,
- Italy.
-
- [Arbaugh] Arbaugh, W., Shankar, N. and J.Y.C. Wan, "Your 802.11
- Wireless Network has No Clothes", Department of
- Computer Science, University of Maryland, College
- Park, March 2001.
-
- [Fluhrer] Fluhrer, S., Mantin, I. and A. Shamir, "Weaknesses in
- the Key Scheduling Algorithm of RC4", Eighth Annual
- Workshop on Selected Areas in Cryptography, Toronto,
- Canada, August 2001.
-
- [Stubbl] Stubblefield, A., Ioannidis, J. and A. Rubin, "Using
- the Fluhrer, Mantin and Shamir Attack to Break WEP",
- 2002 NDSS Conference.
-
-
-
-
-
-
-Congdon, et al. Informational [Page 24]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-8. Table of Attributes
-
- The following table provides a guide to which attributes MAY be sent
- and received as part of IEEE 802.1X authentication. L3 denotes
- attributes that require layer 3 capabilities, and thus may not be
- supported by all Authenticators. For each attribute, the reference
- provides the definitive information on usage.
-
- 802.1X # Attribute
- X 1 User-Name [RFC2865]
- 2 User-Password [RFC2865]
- 3 CHAP-Password [RFC2865]
- X 4 NAS-IP-Address [RFC2865]
- X 5 NAS-Port [RFC2865]
- X 6 Service-Type [RFC2865]
- 7 Framed-Protocol [RFC2865]
- L3 8 Framed-IP-Address [RFC2865]
- L3 9 Framed-IP-Netmask [RFC2865]
- L3 10 Framed-Routing [RFC2865]
- X 11 Filter-Id [RFC2865]
- X 12 Framed-MTU [RFC2865]
- 13 Framed-Compression [RFC2865]
- L3 14 Login-IP-Host [RFC2865]
- L3 15 Login-Service [RFC2865]
- L3 16 Login-TCP-Port [RFC2865]
- 18 Reply-Message [RFC2865]
- 19 Callback-Number [RFC2865]
- 20 Callback-Id [RFC2865]
- L3 22 Framed-Route [RFC2865]
- L3 23 Framed-IPX-Network [RFC2865]
- X 24 State [RFC2865]
- X 25 Class [RFC2865]
- X 26 Vendor-Specific [RFC2865]
- X 27 Session-Timeout [RFC2865]
- X 28 Idle-Timeout [RFC2865]
- X 29 Termination-Action [RFC2865]
- X 30 Called-Station-Id [RFC2865]
- X 31 Calling-Station-Id [RFC2865]
- X 32 NAS-Identifier [RFC2865]
- X 33 Proxy-State [RFC2865]
- 34 Login-LAT-Service [RFC2865]
- 35 Login-LAT-Node [RFC2865]
- 36 Login-LAT-Group [RFC2865]
- 802.1X # Attribute
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 25]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- 802.1X # Attribute
- L3 37 Framed-AppleTalk-Link [RFC2865]
- L3 38 Framed-AppleTalk-Network [RFC2865]
- L3 39 Framed-AppleTalk-Zone [RFC2865]
- X 40 Acct-Status-Type [RFC2866]
- X 41 Acct-Delay-Time [RFC2866]
- X 42 Acct-Input-Octets [RFC2866]
- X 43 Acct-Output-Octets [RFC2866]
- X 44 Acct-Session-Id [RFC2866]
- X 45 Acct-Authentic [RFC2866]
- X 46 Acct-Session-Time [RFC2866]
- X 47 Acct-Input-Packets [RFC2866]
- X 48 Acct-Output-Packets [RFC2866]
- X 49 Acct-Terminate-Cause [RFC2866]
- X 50 Acct-Multi-Session-Id [RFC2866]
- X 51 Acct-Link-Count [RFC2866]
- X 52 Acct-Input-Gigawords [RFC2869]
- X 53 Acct-Output-Gigawords [RFC2869]
- X 55 Event-Timestamp [RFC2869]
- 60 CHAP-Challenge [RFC2865]
- X 61 NAS-Port-Type [RFC2865]
- 62 Port-Limit [RFC2865]
- 63 Login-LAT-Port [RFC2865]
- X 64 Tunnel-Type [RFC2868]
- X 65 Tunnel-Medium-Type [RFC2868]
- L3 66 Tunnel-Client-Endpoint [RFC2868]
- L3 67 Tunnel-Server-Endpoint [RFC2868]
- L3 68 Acct-Tunnel-Connection [RFC2867]
- L3 69 Tunnel-Password [RFC2868]
- 70 ARAP-Password [RFC2869]
- 71 ARAP-Features [RFC2869]
- 72 ARAP-Zone-Access [RFC2869]
- 73 ARAP-Security [RFC2869]
- 74 ARAP-Security-Data [RFC2869]
- 75 Password-Retry [RFC2869]
- 76 Prompt [RFC2869]
- X 77 Connect-Info [RFC2869]
- X 78 Configuration-Token [RFC2869]
- X 79 EAP-Message [RFC3579]
- X 80 Message-Authenticator [RFC3579]
- X 81 Tunnel-Private-Group-ID [RFC2868]
- L3 82 Tunnel-Assignment-ID [RFC2868]
- X 83 Tunnel-Preference [RFC2868]
- 84 ARAP-Challenge-Response [RFC2869]
- 802.1X # Attribute
-
-
-
-
-
-
-Congdon, et al. Informational [Page 26]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
- 802.1X # Attribute
- X 85 Acct-Interim-Interval [RFC2869]
- X 86 Acct-Tunnel-Packets-Lost [RFC2867]
- X 87 NAS-Port-Id [RFC2869]
- L3 88 Framed-Pool [RFC2869]
- L3 90 Tunnel-Client-Auth-ID [RFC2868]
- L3 91 Tunnel-Server-Auth-ID [RFC2868]
- X 95 NAS-IPv6-Address [RFC3162]
- 96 Framed-Interface-Id [RFC3162]
- L3 97 Framed-IPv6-Prefix [RFC3162]
- L3 98 Login-IPv6-Host [RFC3162]
- L3 99 Framed-IPv6-Route [RFC3162]
- L3 100 Framed-IPv6-Pool [RFC3162]
- X 101 Error-Cause [RFC3576]
- 802.1X # Attribute
-
- Key
- ===
- X = May be used with IEEE 802.1X authentication
- L3 = Implemented only by Authenticators with Layer 3
- capabilities
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 27]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-9. Intellectual Property Statement
-
- The IETF takes no position regarding the validity or scope of any
- intellectual property or other rights that might be claimed to
- pertain to the implementation or use of the technology described in
- this document or the extent to which any license under such rights
- might or might not be available; neither does it represent that it
- has made any effort to identify any such rights. Information on the
- IETF's procedures with respect to rights in standards-track and
- standards- related documentation can be found in BCP-11. Copies of
- claims of rights made available for publication and any assurances of
- licenses to be made available, or the result of an attempt made to
- obtain a general license or permission for the use of such
- proprietary rights by implementors or users of this specification can
- be obtained from the IETF Secretariat.
-
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights which may cover technology that may be required to practice
- this standard. Please address the information to the IETF Executive
- Director.
-
-10. Acknowledgments
-
- The authors would like to acknowledge Bob O'Hara of Airespace, David
- Halasz of Cisco, Tim Moore, Sachin Seth and Ashwin Palekar of
- Microsoft, Andrea Li, Albert Young and Dave Bagby of 3Com for
- contributions to this document.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 28]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-11. Authors' Addresses
-
- Paul Congdon
- Hewlett Packard Company
- HP ProCurve Networking
- 8000 Foothills Blvd, M/S 5662
- Roseville, CA 95747
-
- Phone: +1 916 785 5753
- Fax: +1 916 785 8478
- EMail: paul_congdon@hp.com
-
- Bernard Aboba
- Microsoft Corporation
- One Microsoft Way
- Redmond, WA 98052
-
- Phone: +1 425 706 6605
- Fax: +1 425 936 7329
- EMail: bernarda@microsoft.com
-
- Andrew Smith
- Trapeze Networks
- 5753 W. Las Positas Blvd.
- Pleasanton, CA 94588-4084
-
- Fax: +1 415 345 1827
- EMail: ah_smith@acm.org
-
- John Roese
- Enterasys
-
- Phone: +1 603 337 1506
- EMail: jjr@enterasys.com
-
- Glen Zorn
- Cisco Systems, Inc.
- 500 108th Avenue N.E., Suite 500
- Bellevue, WA 98004
-
- Phone: +1 425 438 8218
- Fax: +1 425 438 1848
- EMail: gwz@cisco.com
-
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 29]
-
-RFC 3580 IEEE 802.1X RADIUS September 2003
-
-
-12. Full Copyright Statement
-
- Copyright (C) The Internet Society (2003). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assignees.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Congdon, et al. Informational [Page 30]
-
diff --git a/doc/rfc791.txt b/doc/rfc791.txt
deleted file mode 100644
index 5952d0b..0000000
--- a/doc/rfc791.txt
+++ /dev/null
@@ -1,2887 +0,0 @@
-
-
-RFC: 791
-
-
-
-
-
-
-
- INTERNET PROTOCOL
-
-
- DARPA INTERNET PROGRAM
-
- PROTOCOL SPECIFICATION
-
-
-
- September 1981
-
-
-
-
-
-
-
-
-
-
-
-
-
- prepared for
-
- Defense Advanced Research Projects Agency
- Information Processing Techniques Office
- 1400 Wilson Boulevard
- Arlington, Virginia 22209
-
-
-
-
-
-
-
- by
-
- Information Sciences Institute
- University of Southern California
- 4676 Admiralty Way
- Marina del Rey, California 90291
-
-
-
-September 1981
- Internet Protocol
-
-
-
- TABLE OF CONTENTS
-
- PREFACE ........................................................ iii
-
-1. INTRODUCTION ..................................................... 1
-
- 1.1 Motivation .................................................... 1
- 1.2 Scope ......................................................... 1
- 1.3 Interfaces .................................................... 1
- 1.4 Operation ..................................................... 2
-
-2. OVERVIEW ......................................................... 5
-
- 2.1 Relation to Other Protocols ................................... 9
- 2.2 Model of Operation ............................................ 5
- 2.3 Function Description .......................................... 7
- 2.4 Gateways ...................................................... 9
-
-3. SPECIFICATION ................................................... 11
-
- 3.1 Internet Header Format ....................................... 11
- 3.2 Discussion ................................................... 23
- 3.3 Interfaces ................................................... 31
-
-APPENDIX A: Examples & Scenarios ................................... 34
-APPENDIX B: Data Transmission Order ................................ 39
-
-GLOSSARY ............................................................ 41
-
-REFERENCES .......................................................... 45
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page i]
-
-
- September 1981
-Internet Protocol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page ii]
-
-
-September 1981
- Internet Protocol
-
-
-
- PREFACE
-
-
-
-This document specifies the DoD Standard Internet Protocol. This
-document is based on six earlier editions of the ARPA Internet Protocol
-Specification, and the present text draws heavily from them. There have
-been many contributors to this work both in terms of concepts and in
-terms of text. This edition revises aspects of addressing, error
-handling, option codes, and the security, precedence, compartments, and
-handling restriction features of the internet protocol.
-
- Jon Postel
-
- Editor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page iii]
-
-
-
- September 1981
-
-
-RFC: 791
-Replaces: RFC 760
-IENs 128, 123, 111,
-80, 54, 44, 41, 28, 26
-
- INTERNET PROTOCOL
-
- DARPA INTERNET PROGRAM
- PROTOCOL SPECIFICATION
-
-
-
- 1. INTRODUCTION
-
-1.1. Motivation
-
- The Internet Protocol is designed for use in interconnected systems of
- packet-switched computer communication networks. Such a system has
- been called a "catenet" [1]. The internet protocol provides for
- transmitting blocks of data called datagrams from sources to
- destinations, where sources and destinations are hosts identified by
- fixed length addresses. The internet protocol also provides for
- fragmentation and reassembly of long datagrams, if necessary, for
- transmission through "small packet" networks.
-
-1.2. Scope
-
- The internet protocol is specifically limited in scope to provide the
- functions necessary to deliver a package of bits (an internet
- datagram) from a source to a destination over an interconnected system
- of networks. There are no mechanisms to augment end-to-end data
- reliability, flow control, sequencing, or other services commonly
- found in host-to-host protocols. The internet protocol can capitalize
- on the services of its supporting networks to provide various types
- and qualities of service.
-
-1.3. Interfaces
-
- This protocol is called on by host-to-host protocols in an internet
- environment. This protocol calls on local network protocols to carry
- the internet datagram to the next gateway or destination host.
-
- For example, a TCP module would call on the internet module to take a
- TCP segment (including the TCP header and user data) as the data
- portion of an internet datagram. The TCP module would provide the
- addresses and other parameters in the internet header to the internet
- module as arguments of the call. The internet module would then
- create an internet datagram and call on the local network interface to
- transmit the internet datagram.
-
- In the ARPANET case, for example, the internet module would call on a
-
-
- [Page 1]
-
-
- September 1981
-Internet Protocol
-Introduction
-
-
-
- local net module which would add the 1822 leader [2] to the internet
- datagram creating an ARPANET message to transmit to the IMP. The
- ARPANET address would be derived from the internet address by the
- local network interface and would be the address of some host in the
- ARPANET, that host might be a gateway to other networks.
-
-1.4. Operation
-
- The internet protocol implements two basic functions: addressing and
- fragmentation.
-
- The internet modules use the addresses carried in the internet header
- to transmit internet datagrams toward their destinations. The
- selection of a path for transmission is called routing.
-
- The internet modules use fields in the internet header to fragment and
- reassemble internet datagrams when necessary for transmission through
- "small packet" networks.
-
- The model of operation is that an internet module resides in each host
- engaged in internet communication and in each gateway that
- interconnects networks. These modules share common rules for
- interpreting address fields and for fragmenting and assembling
- internet datagrams. In addition, these modules (especially in
- gateways) have procedures for making routing decisions and other
- functions.
-
- The internet protocol treats each internet datagram as an independent
- entity unrelated to any other internet datagram. There are no
- connections or logical circuits (virtual or otherwise).
-
- The internet protocol uses four key mechanisms in providing its
- service: Type of Service, Time to Live, Options, and Header Checksum.
-
- The Type of Service is used to indicate the quality of the service
- desired. The type of service is an abstract or generalized set of
- parameters which characterize the service choices provided in the
- networks that make up the internet. This type of service indication
- is to be used by gateways to select the actual transmission parameters
- for a particular network, the network to be used for the next hop, or
- the next gateway when routing an internet datagram.
-
- The Time to Live is an indication of an upper bound on the lifetime of
- an internet datagram. It is set by the sender of the datagram and
- reduced at the points along the route where it is processed. If the
- time to live reaches zero before the internet datagram reaches its
- destination, the internet datagram is destroyed. The time to live can
- be thought of as a self destruct time limit.
-
-
-[Page 2]
-
-
-September 1981
- Internet Protocol
- Introduction
-
-
-
- The Options provide for control functions needed or useful in some
- situations but unnecessary for the most common communications. The
- options include provisions for timestamps, security, and special
- routing.
-
- The Header Checksum provides a verification that the information used
- in processing internet datagram has been transmitted correctly. The
- data may contain errors. If the header checksum fails, the internet
- datagram is discarded at once by the entity which detects the error.
-
- The internet protocol does not provide a reliable communication
- facility. There are no acknowledgments either end-to-end or
- hop-by-hop. There is no error control for data, only a header
- checksum. There are no retransmissions. There is no flow control.
-
- Errors detected may be reported via the Internet Control Message
- Protocol (ICMP) [3] which is implemented in the internet protocol
- module.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 3]
-
-
- September 1981
-Internet Protocol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 4]
-
-
-September 1981
- Internet Protocol
-
-
-
- 2. OVERVIEW
-
-2.1. Relation to Other Protocols
-
- The following diagram illustrates the place of the internet protocol
- in the protocol hierarchy:
-
-
- +------+ +-----+ +-----+ +-----+
- |Telnet| | FTP | | TFTP| ... | ... |
- +------+ +-----+ +-----+ +-----+
- | | | |
- +-----+ +-----+ +-----+
- | TCP | | UDP | ... | ... |
- +-----+ +-----+ +-----+
- | | |
- +--------------------------+----+
- | Internet Protocol & ICMP |
- +--------------------------+----+
- |
- +---------------------------+
- | Local Network Protocol |
- +---------------------------+
-
- Protocol Relationships
-
- Figure 1.
-
- Internet protocol interfaces on one side to the higher level
- host-to-host protocols and on the other side to the local network
- protocol. In this context a "local network" may be a small network in
- a building or a large network such as the ARPANET.
-
-2.2. Model of Operation
-
- The model of operation for transmitting a datagram from one
- application program to another is illustrated by the following
- scenario:
-
- We suppose that this transmission will involve one intermediate
- gateway.
-
- The sending application program prepares its data and calls on its
- local internet module to send that data as a datagram and passes the
- destination address and other parameters as arguments of the call.
-
- The internet module prepares a datagram header and attaches the data
- to it. The internet module determines a local network address for
- this internet address, in this case it is the address of a gateway.
-
-
- [Page 5]
-
-
- September 1981
-Internet Protocol
-Overview
-
-
-
- It sends this datagram and the local network address to the local
- network interface.
-
- The local network interface creates a local network header, and
- attaches the datagram to it, then sends the result via the local
- network.
-
- The datagram arrives at a gateway host wrapped in the local network
- header, the local network interface strips off this header, and
- turns the datagram over to the internet module. The internet module
- determines from the internet address that the datagram is to be
- forwarded to another host in a second network. The internet module
- determines a local net address for the destination host. It calls
- on the local network interface for that network to send the
- datagram.
-
- This local network interface creates a local network header and
- attaches the datagram sending the result to the destination host.
-
- At this destination host the datagram is stripped of the local net
- header by the local network interface and handed to the internet
- module.
-
- The internet module determines that the datagram is for an
- application program in this host. It passes the data to the
- application program in response to a system call, passing the source
- address and other parameters as results of the call.
-
-
- Application Application
- Program Program
- \ /
- Internet Module Internet Module Internet Module
- \ / \ /
- LNI-1 LNI-1 LNI-2 LNI-2
- \ / \ /
- Local Network 1 Local Network 2
-
-
-
- Transmission Path
-
- Figure 2
-
-
-
-
-
-
-
-[Page 6]
-
-
-September 1981
- Internet Protocol
- Overview
-
-
-
-2.3. Function Description
-
- The function or purpose of Internet Protocol is to move datagrams
- through an interconnected set of networks. This is done by passing
- the datagrams from one internet module to another until the
- destination is reached. The internet modules reside in hosts and
- gateways in the internet system. The datagrams are routed from one
- internet module to another through individual networks based on the
- interpretation of an internet address. Thus, one important mechanism
- of the internet protocol is the internet address.
-
- In the routing of messages from one internet module to another,
- datagrams may need to traverse a network whose maximum packet size is
- smaller than the size of the datagram. To overcome this difficulty, a
- fragmentation mechanism is provided in the internet protocol.
-
- Addressing
-
- A distinction is made between names, addresses, and routes [4]. A
- name indicates what we seek. An address indicates where it is. A
- route indicates how to get there. The internet protocol deals
- primarily with addresses. It is the task of higher level (i.e.,
- host-to-host or application) protocols to make the mapping from
- names to addresses. The internet module maps internet addresses to
- local net addresses. It is the task of lower level (i.e., local net
- or gateways) procedures to make the mapping from local net addresses
- to routes.
-
- Addresses are fixed length of four octets (32 bits). An address
- begins with a network number, followed by local address (called the
- "rest" field). There are three formats or classes of internet
- addresses: in class a, the high order bit is zero, the next 7 bits
- are the network, and the last 24 bits are the local address; in
- class b, the high order two bits are one-zero, the next 14 bits are
- the network and the last 16 bits are the local address; in class c,
- the high order three bits are one-one-zero, the next 21 bits are the
- network and the last 8 bits are the local address.
-
- Care must be taken in mapping internet addresses to local net
- addresses; a single physical host must be able to act as if it were
- several distinct hosts to the extent of using several distinct
- internet addresses. Some hosts will also have several physical
- interfaces (multi-homing).
-
- That is, provision must be made for a host to have several physical
- interfaces to the network with each having several logical internet
- addresses.
-
-
-
- [Page 7]
-
-
- September 1981
-Internet Protocol
-Overview
-
-
-
- Examples of address mappings may be found in "Address Mappings" [5].
-
- Fragmentation
-
- Fragmentation of an internet datagram is necessary when it
- originates in a local net that allows a large packet size and must
- traverse a local net that limits packets to a smaller size to reach
- its destination.
-
- An internet datagram can be marked "don't fragment." Any internet
- datagram so marked is not to be internet fragmented under any
- circumstances. If internet datagram marked don't fragment cannot be
- delivered to its destination without fragmenting it, it is to be
- discarded instead.
-
- Fragmentation, transmission and reassembly across a local network
- which is invisible to the internet protocol module is called
- intranet fragmentation and may be used [6].
-
- The internet fragmentation and reassembly procedure needs to be able
- to break a datagram into an almost arbitrary number of pieces that
- can be later reassembled. The receiver of the fragments uses the
- identification field to ensure that fragments of different datagrams
- are not mixed. The fragment offset field tells the receiver the
- position of a fragment in the original datagram. The fragment
- offset and length determine the portion of the original datagram
- covered by this fragment. The more-fragments flag indicates (by
- being reset) the last fragment. These fields provide sufficient
- information to reassemble datagrams.
-
- The identification field is used to distinguish the fragments of one
- datagram from those of another. The originating protocol module of
- an internet datagram sets the identification field to a value that
- must be unique for that source-destination pair and protocol for the
- time the datagram will be active in the internet system. The
- originating protocol module of a complete datagram sets the
- more-fragments flag to zero and the fragment offset to zero.
-
- To fragment a long internet datagram, an internet protocol module
- (for example, in a gateway), creates two new internet datagrams and
- copies the contents of the internet header fields from the long
- datagram into both new internet headers. The data of the long
- datagram is divided into two portions on a 8 octet (64 bit) boundary
- (the second portion might not be an integral multiple of 8 octets,
- but the first must be). Call the number of 8 octet blocks in the
- first portion NFB (for Number of Fragment Blocks). The first
- portion of the data is placed in the first new internet datagram,
- and the total length field is set to the length of the first
-
-
-[Page 8]
-
-
-September 1981
- Internet Protocol
- Overview
-
-
-
- datagram. The more-fragments flag is set to one. The second
- portion of the data is placed in the second new internet datagram,
- and the total length field is set to the length of the second
- datagram. The more-fragments flag carries the same value as the
- long datagram. The fragment offset field of the second new internet
- datagram is set to the value of that field in the long datagram plus
- NFB.
-
- This procedure can be generalized for an n-way split, rather than
- the two-way split described.
-
- To assemble the fragments of an internet datagram, an internet
- protocol module (for example at a destination host) combines
- internet datagrams that all have the same value for the four fields:
- identification, source, destination, and protocol. The combination
- is done by placing the data portion of each fragment in the relative
- position indicated by the fragment offset in that fragment's
- internet header. The first fragment will have the fragment offset
- zero, and the last fragment will have the more-fragments flag reset
- to zero.
-
-2.4. Gateways
-
- Gateways implement internet protocol to forward datagrams between
- networks. Gateways also implement the Gateway to Gateway Protocol
- (GGP) [7] to coordinate routing and other internet control
- information.
-
- In a gateway the higher level protocols need not be implemented and
- the GGP functions are added to the IP module.
-
-
- +-------------------------------+
- | Internet Protocol & ICMP & GGP|
- +-------------------------------+
- | |
- +---------------+ +---------------+
- | Local Net | | Local Net |
- +---------------+ +---------------+
-
- Gateway Protocols
-
- Figure 3.
-
-
-
-
-
-
-
- [Page 9]
-
-
- September 1981
-Internet Protocol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 10]
-
-
-September 1981
- Internet Protocol
-
-
-
- 3. SPECIFICATION
-
-3.1. Internet Header Format
-
- A summary of the contents of the internet header follows:
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Version| IHL |Type of Service| Total Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identification |Flags| Fragment Offset |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time to Live | Protocol | Header Checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Source Address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Destination Address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options | Padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Example Internet Datagram Header
-
- Figure 4.
-
- Note that each tick mark represents one bit position.
-
- Version: 4 bits
-
- The Version field indicates the format of the internet header. This
- document describes version 4.
-
- IHL: 4 bits
-
- Internet Header Length is the length of the internet header in 32
- bit words, and thus points to the beginning of the data. Note that
- the minimum value for a correct header is 5.
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 11]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- Type of Service: 8 bits
-
- The Type of Service provides an indication of the abstract
- parameters of the quality of service desired. These parameters are
- to be used to guide the selection of the actual service parameters
- when transmitting a datagram through a particular network. Several
- networks offer service precedence, which somehow treats high
- precedence traffic as more important than other traffic (generally
- by accepting only traffic above a certain precedence at time of high
- load). The major choice is a three way tradeoff between low-delay,
- high-reliability, and high-throughput.
-
- Bits 0-2: Precedence.
- Bit 3: 0 = Normal Delay, 1 = Low Delay.
- Bits 4: 0 = Normal Throughput, 1 = High Throughput.
- Bits 5: 0 = Normal Relibility, 1 = High Relibility.
- Bit 6-7: Reserved for Future Use.
-
- 0 1 2 3 4 5 6 7
- +-----+-----+-----+-----+-----+-----+-----+-----+
- | | | | | | |
- | PRECEDENCE | D | T | R | 0 | 0 |
- | | | | | | |
- +-----+-----+-----+-----+-----+-----+-----+-----+
-
- Precedence
-
- 111 - Network Control
- 110 - Internetwork Control
- 101 - CRITIC/ECP
- 100 - Flash Override
- 011 - Flash
- 010 - Immediate
- 001 - Priority
- 000 - Routine
-
- The use of the Delay, Throughput, and Reliability indications may
- increase the cost (in some sense) of the service. In many networks
- better performance for one of these parameters is coupled with worse
- performance on another. Except for very unusual cases at most two
- of these three indications should be set.
-
- The type of service is used to specify the treatment of the datagram
- during its transmission through the internet system. Example
- mappings of the internet type of service to the actual service
- provided on networks such as AUTODIN II, ARPANET, SATNET, and PRNET
- is given in "Service Mappings" [8].
-
-
-
-[Page 12]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- The Network Control precedence designation is intended to be used
- within a network only. The actual use and control of that
- designation is up to each network. The Internetwork Control
- designation is intended for use by gateway control originators only.
- If the actual use of these precedence designations is of concern to
- a particular network, it is the responsibility of that network to
- control the access to, and use of, those precedence designations.
-
- Total Length: 16 bits
-
- Total Length is the length of the datagram, measured in octets,
- including internet header and data. This field allows the length of
- a datagram to be up to 65,535 octets. Such long datagrams are
- impractical for most hosts and networks. All hosts must be prepared
- to accept datagrams of up to 576 octets (whether they arrive whole
- or in fragments). It is recommended that hosts only send datagrams
- larger than 576 octets if they have assurance that the destination
- is prepared to accept the larger datagrams.
-
- The number 576 is selected to allow a reasonable sized data block to
- be transmitted in addition to the required header information. For
- example, this size allows a data block of 512 octets plus 64 header
- octets to fit in a datagram. The maximal internet header is 60
- octets, and a typical internet header is 20 octets, allowing a
- margin for headers of higher level protocols.
-
- Identification: 16 bits
-
- An identifying value assigned by the sender to aid in assembling the
- fragments of a datagram.
-
- Flags: 3 bits
-
- Various Control Flags.
-
- Bit 0: reserved, must be zero
- Bit 1: (DF) 0 = May Fragment, 1 = Don't Fragment.
- Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments.
-
- 0 1 2
- +---+---+---+
- | | D | M |
- | 0 | F | F |
- +---+---+---+
-
- Fragment Offset: 13 bits
-
- This field indicates where in the datagram this fragment belongs.
-
-
- [Page 13]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- The fragment offset is measured in units of 8 octets (64 bits). The
- first fragment has offset zero.
-
- Time to Live: 8 bits
-
- This field indicates the maximum time the datagram is allowed to
- remain in the internet system. If this field contains the value
- zero, then the datagram must be destroyed. This field is modified
- in internet header processing. The time is measured in units of
- seconds, but since every module that processes a datagram must
- decrease the TTL by at least one even if it process the datagram in
- less than a second, the TTL must be thought of only as an upper
- bound on the time a datagram may exist. The intention is to cause
- undeliverable datagrams to be discarded, and to bound the maximum
- datagram lifetime.
-
- Protocol: 8 bits
-
- This field indicates the next level protocol used in the data
- portion of the internet datagram. The values for various protocols
- are specified in "Assigned Numbers" [9].
-
- Header Checksum: 16 bits
-
- A checksum on the header only. Since some header fields change
- (e.g., time to live), this is recomputed and verified at each point
- that the internet header is processed.
-
- The checksum algorithm is:
-
- The checksum field is the 16 bit one's complement of the one's
- complement sum of all 16 bit words in the header. For purposes of
- computing the checksum, the value of the checksum field is zero.
-
- This is a simple to compute checksum and experimental evidence
- indicates it is adequate, but it is provisional and may be replaced
- by a CRC procedure, depending on further experience.
-
- Source Address: 32 bits
-
- The source address. See section 3.2.
-
- Destination Address: 32 bits
-
- The destination address. See section 3.2.
-
-
-
-
-
-[Page 14]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- Options: variable
-
- The options may appear or not in datagrams. They must be
- implemented by all IP modules (host and gateways). What is optional
- is their transmission in any particular datagram, not their
- implementation.
-
- In some environments the security option may be required in all
- datagrams.
-
- The option field is variable in length. There may be zero or more
- options. There are two cases for the format of an option:
-
- Case 1: A single octet of option-type.
-
- Case 2: An option-type octet, an option-length octet, and the
- actual option-data octets.
-
- The option-length octet counts the option-type octet and the
- option-length octet as well as the option-data octets.
-
- The option-type octet is viewed as having 3 fields:
-
- 1 bit copied flag,
- 2 bits option class,
- 5 bits option number.
-
- The copied flag indicates that this option is copied into all
- fragments on fragmentation.
-
- 0 = not copied
- 1 = copied
-
- The option classes are:
-
- 0 = control
- 1 = reserved for future use
- 2 = debugging and measurement
- 3 = reserved for future use
-
-
-
-
-
-
-
-
-
-
-
- [Page 15]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- The following internet options are defined:
-
- CLASS NUMBER LENGTH DESCRIPTION
- ----- ------ ------ -----------
- 0 0 - End of Option list. This option occupies only
- 1 octet; it has no length octet.
- 0 1 - No Operation. This option occupies only 1
- octet; it has no length octet.
- 0 2 11 Security. Used to carry Security,
- Compartmentation, User Group (TCC), and
- Handling Restriction Codes compatible with DOD
- requirements.
- 0 3 var. Loose Source Routing. Used to route the
- internet datagram based on information
- supplied by the source.
- 0 9 var. Strict Source Routing. Used to route the
- internet datagram based on information
- supplied by the source.
- 0 7 var. Record Route. Used to trace the route an
- internet datagram takes.
- 0 8 4 Stream ID. Used to carry the stream
- identifier.
- 2 4 var. Internet Timestamp.
-
-
-
- Specific Option Definitions
-
- End of Option List
-
- +--------+
- |00000000|
- +--------+
- Type=0
-
- This option indicates the end of the option list. This might
- not coincide with the end of the internet header according to
- the internet header length. This is used at the end of all
- options, not the end of each option, and need only be used if
- the end of the options would not otherwise coincide with the end
- of the internet header.
-
- May be copied, introduced, or deleted on fragmentation, or for
- any other reason.
-
-
-
-
-
-
-[Page 16]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- No Operation
-
- +--------+
- |00000001|
- +--------+
- Type=1
-
- This option may be used between options, for example, to align
- the beginning of a subsequent option on a 32 bit boundary.
-
- May be copied, introduced, or deleted on fragmentation, or for
- any other reason.
-
- Security
-
- This option provides a way for hosts to send security,
- compartmentation, handling restrictions, and TCC (closed user
- group) parameters. The format for this option is as follows:
-
- +--------+--------+---//---+---//---+---//---+---//---+
- |10000010|00001011|SSS SSS|CCC CCC|HHH HHH| TCC |
- +--------+--------+---//---+---//---+---//---+---//---+
- Type=130 Length=11
-
- Security (S field): 16 bits
-
- Specifies one of 16 levels of security (eight of which are
- reserved for future use).
-
- 00000000 00000000 - Unclassified
- 11110001 00110101 - Confidential
- 01111000 10011010 - EFTO
- 10111100 01001101 - MMMM
- 01011110 00100110 - PROG
- 10101111 00010011 - Restricted
- 11010111 10001000 - Secret
- 01101011 11000101 - Top Secret
- 00110101 11100010 - (Reserved for future use)
- 10011010 11110001 - (Reserved for future use)
- 01001101 01111000 - (Reserved for future use)
- 00100100 10111101 - (Reserved for future use)
- 00010011 01011110 - (Reserved for future use)
- 10001001 10101111 - (Reserved for future use)
- 11000100 11010110 - (Reserved for future use)
- 11100010 01101011 - (Reserved for future use)
-
-
-
-
-
- [Page 17]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- Compartments (C field): 16 bits
-
- An all zero value is used when the information transmitted is
- not compartmented. Other values for the compartments field
- may be obtained from the Defense Intelligence Agency.
-
- Handling Restrictions (H field): 16 bits
-
- The values for the control and release markings are
- alphanumeric digraphs and are defined in the Defense
- Intelligence Agency Manual DIAM 65-19, "Standard Security
- Markings".
-
- Transmission Control Code (TCC field): 24 bits
-
- Provides a means to segregate traffic and define controlled
- communities of interest among subscribers. The TCC values are
- trigraphs, and are available from HQ DCA Code 530.
-
- Must be copied on fragmentation. This option appears at most
- once in a datagram.
-
- Loose Source and Record Route
-
- +--------+--------+--------+---------//--------+
- |10000011| length | pointer| route data |
- +--------+--------+--------+---------//--------+
- Type=131
-
- The loose source and record route (LSRR) option provides a means
- for the source of an internet datagram to supply routing
- information to be used by the gateways in forwarding the
- datagram to the destination, and to record the route
- information.
-
- The option begins with the option type code. The second octet
- is the option length which includes the option type code and the
- length octet, the pointer octet, and length-3 octets of route
- data. The third octet is the pointer into the route data
- indicating the octet which begins the next source address to be
- processed. The pointer is relative to this option, and the
- smallest legal value for the pointer is 4.
-
- A route data is composed of a series of internet addresses.
- Each internet address is 32 bits or 4 octets. If the pointer is
- greater than the length, the source route is empty (and the
- recorded route full) and the routing is to be based on the
- destination address field.
-
-
-[Page 18]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- If the address in destination address field has been reached and
- the pointer is not greater than the length, the next address in
- the source route replaces the address in the destination address
- field, and the recorded route address replaces the source
- address just used, and pointer is increased by four.
-
- The recorded route address is the internet module's own internet
- address as known in the environment into which this datagram is
- being forwarded.
-
- This procedure of replacing the source route with the recorded
- route (though it is in the reverse of the order it must be in to
- be used as a source route) means the option (and the IP header
- as a whole) remains a constant length as the datagram progresses
- through the internet.
-
- This option is a loose source route because the gateway or host
- IP is allowed to use any route of any number of other
- intermediate gateways to reach the next address in the route.
-
- Must be copied on fragmentation. Appears at most once in a
- datagram.
-
- Strict Source and Record Route
-
- +--------+--------+--------+---------//--------+
- |10001001| length | pointer| route data |
- +--------+--------+--------+---------//--------+
- Type=137
-
- The strict source and record route (SSRR) option provides a
- means for the source of an internet datagram to supply routing
- information to be used by the gateways in forwarding the
- datagram to the destination, and to record the route
- information.
-
- The option begins with the option type code. The second octet
- is the option length which includes the option type code and the
- length octet, the pointer octet, and length-3 octets of route
- data. The third octet is the pointer into the route data
- indicating the octet which begins the next source address to be
- processed. The pointer is relative to this option, and the
- smallest legal value for the pointer is 4.
-
- A route data is composed of a series of internet addresses.
- Each internet address is 32 bits or 4 octets. If the pointer is
- greater than the length, the source route is empty (and the
-
-
-
- [Page 19]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- recorded route full) and the routing is to be based on the
- destination address field.
-
- If the address in destination address field has been reached and
- the pointer is not greater than the length, the next address in
- the source route replaces the address in the destination address
- field, and the recorded route address replaces the source
- address just used, and pointer is increased by four.
-
- The recorded route address is the internet module's own internet
- address as known in the environment into which this datagram is
- being forwarded.
-
- This procedure of replacing the source route with the recorded
- route (though it is in the reverse of the order it must be in to
- be used as a source route) means the option (and the IP header
- as a whole) remains a constant length as the datagram progresses
- through the internet.
-
- This option is a strict source route because the gateway or host
- IP must send the datagram directly to the next address in the
- source route through only the directly connected network
- indicated in the next address to reach the next gateway or host
- specified in the route.
-
- Must be copied on fragmentation. Appears at most once in a
- datagram.
-
- Record Route
-
- +--------+--------+--------+---------//--------+
- |00000111| length | pointer| route data |
- +--------+--------+--------+---------//--------+
- Type=7
-
- The record route option provides a means to record the route of
- an internet datagram.
-
- The option begins with the option type code. The second octet
- is the option length which includes the option type code and the
- length octet, the pointer octet, and length-3 octets of route
- data. The third octet is the pointer into the route data
- indicating the octet which begins the next area to store a route
- address. The pointer is relative to this option, and the
- smallest legal value for the pointer is 4.
-
- A recorded route is composed of a series of internet addresses.
- Each internet address is 32 bits or 4 octets. If the pointer is
-
-
-[Page 20]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- greater than the length, the recorded route data area is full.
- The originating host must compose this option with a large
- enough route data area to hold all the address expected. The
- size of the option does not change due to adding addresses. The
- intitial contents of the route data area must be zero.
-
- When an internet module routes a datagram it checks to see if
- the record route option is present. If it is, it inserts its
- own internet address as known in the environment into which this
- datagram is being forwarded into the recorded route begining at
- the octet indicated by the pointer, and increments the pointer
- by four.
-
- If the route data area is already full (the pointer exceeds the
- length) the datagram is forwarded without inserting the address
- into the recorded route. If there is some room but not enough
- room for a full address to be inserted, the original datagram is
- considered to be in error and is discarded. In either case an
- ICMP parameter problem message may be sent to the source
- host [3].
-
- Not copied on fragmentation, goes in first fragment only.
- Appears at most once in a datagram.
-
- Stream Identifier
-
- +--------+--------+--------+--------+
- |10001000|00000010| Stream ID |
- +--------+--------+--------+--------+
- Type=136 Length=4
-
- This option provides a way for the 16-bit SATNET stream
- identifier to be carried through networks that do not support
- the stream concept.
-
- Must be copied on fragmentation. Appears at most once in a
- datagram.
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 21]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- Internet Timestamp
-
- +--------+--------+--------+--------+
- |01000100| length | pointer|oflw|flg|
- +--------+--------+--------+--------+
- | internet address |
- +--------+--------+--------+--------+
- | timestamp |
- +--------+--------+--------+--------+
- | . |
- .
- .
- Type = 68
-
- The Option Length is the number of octets in the option counting
- the type, length, pointer, and overflow/flag octets (maximum
- length 40).
-
- The Pointer is the number of octets from the beginning of this
- option to the end of timestamps plus one (i.e., it points to the
- octet beginning the space for next timestamp). The smallest
- legal value is 5. The timestamp area is full when the pointer
- is greater than the length.
-
- The Overflow (oflw) [4 bits] is the number of IP modules that
- cannot register timestamps due to lack of space.
-
- The Flag (flg) [4 bits] values are
-
- 0 -- time stamps only, stored in consecutive 32-bit words,
-
- 1 -- each timestamp is preceded with internet address of the
- registering entity,
-
- 3 -- the internet address fields are prespecified. An IP
- module only registers its timestamp if it matches its own
- address with the next specified internet address.
-
- The Timestamp is a right-justified, 32-bit timestamp in
- milliseconds since midnight UT. If the time is not available in
- milliseconds or cannot be provided with respect to midnight UT
- then any time may be inserted as a timestamp provided the high
- order bit of the timestamp field is set to one to indicate the
- use of a non-standard value.
-
- The originating host must compose this option with a large
- enough timestamp data area to hold all the timestamp information
- expected. The size of the option does not change due to adding
-
-
-[Page 22]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- timestamps. The intitial contents of the timestamp data area
- must be zero or internet address/zero pairs.
-
- If the timestamp data area is already full (the pointer exceeds
- the length) the datagram is forwarded without inserting the
- timestamp, but the overflow count is incremented by one.
-
- If there is some room but not enough room for a full timestamp
- to be inserted, or the overflow count itself overflows, the
- original datagram is considered to be in error and is discarded.
- In either case an ICMP parameter problem message may be sent to
- the source host [3].
-
- The timestamp option is not copied upon fragmentation. It is
- carried in the first fragment. Appears at most once in a
- datagram.
-
- Padding: variable
-
- The internet header padding is used to ensure that the internet
- header ends on a 32 bit boundary. The padding is zero.
-
-3.2. Discussion
-
- The implementation of a protocol must be robust. Each implementation
- must expect to interoperate with others created by different
- individuals. While the goal of this specification is to be explicit
- about the protocol there is the possibility of differing
- interpretations. In general, an implementation must be conservative
- in its sending behavior, and liberal in its receiving behavior. That
- is, it must be careful to send well-formed datagrams, but must accept
- any datagram that it can interpret (e.g., not object to technical
- errors where the meaning is still clear).
-
- The basic internet service is datagram oriented and provides for the
- fragmentation of datagrams at gateways, with reassembly taking place
- at the destination internet protocol module in the destination host.
- Of course, fragmentation and reassembly of datagrams within a network
- or by private agreement between the gateways of a network is also
- allowed since this is transparent to the internet protocols and the
- higher-level protocols. This transparent type of fragmentation and
- reassembly is termed "network-dependent" (or intranet) fragmentation
- and is not discussed further here.
-
- Internet addresses distinguish sources and destinations to the host
- level and provide a protocol field as well. It is assumed that each
- protocol will provide for whatever multiplexing is necessary within a
- host.
-
-
- [Page 23]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- Addressing
-
- To provide for flexibility in assigning address to networks and
- allow for the large number of small to intermediate sized networks
- the interpretation of the address field is coded to specify a small
- number of networks with a large number of host, a moderate number of
- networks with a moderate number of hosts, and a large number of
- networks with a small number of hosts. In addition there is an
- escape code for extended addressing mode.
-
- Address Formats:
-
- High Order Bits Format Class
- --------------- ------------------------------- -----
- 0 7 bits of net, 24 bits of host a
- 10 14 bits of net, 16 bits of host b
- 110 21 bits of net, 8 bits of host c
- 111 escape to extended addressing mode
-
- A value of zero in the network field means this network. This is
- only used in certain ICMP messages. The extended addressing mode
- is undefined. Both of these features are reserved for future use.
-
- The actual values assigned for network addresses is given in
- "Assigned Numbers" [9].
-
- The local address, assigned by the local network, must allow for a
- single physical host to act as several distinct internet hosts.
- That is, there must be a mapping between internet host addresses and
- network/host interfaces that allows several internet addresses to
- correspond to one interface. It must also be allowed for a host to
- have several physical interfaces and to treat the datagrams from
- several of them as if they were all addressed to a single host.
-
- Address mappings between internet addresses and addresses for
- ARPANET, SATNET, PRNET, and other networks are described in "Address
- Mappings" [5].
-
- Fragmentation and Reassembly.
-
- The internet identification field (ID) is used together with the
- source and destination address, and the protocol fields, to identify
- datagram fragments for reassembly.
-
- The More Fragments flag bit (MF) is set if the datagram is not the
- last fragment. The Fragment Offset field identifies the fragment
- location, relative to the beginning of the original unfragmented
- datagram. Fragments are counted in units of 8 octets. The
-
-
-[Page 24]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- fragmentation strategy is designed so than an unfragmented datagram
- has all zero fragmentation information (MF = 0, fragment offset =
- 0). If an internet datagram is fragmented, its data portion must be
- broken on 8 octet boundaries.
-
- This format allows 2**13 = 8192 fragments of 8 octets each for a
- total of 65,536 octets. Note that this is consistent with the the
- datagram total length field (of course, the header is counted in the
- total length and not in the fragments).
-
- When fragmentation occurs, some options are copied, but others
- remain with the first fragment only.
-
- Every internet module must be able to forward a datagram of 68
- octets without further fragmentation. This is because an internet
- header may be up to 60 octets, and the minimum fragment is 8 octets.
-
- Every internet destination must be able to receive a datagram of 576
- octets either in one piece or in fragments to be reassembled.
-
- The fields which may be affected by fragmentation include:
-
- (1) options field
- (2) more fragments flag
- (3) fragment offset
- (4) internet header length field
- (5) total length field
- (6) header checksum
-
- If the Don't Fragment flag (DF) bit is set, then internet
- fragmentation of this datagram is NOT permitted, although it may be
- discarded. This can be used to prohibit fragmentation in cases
- where the receiving host does not have sufficient resources to
- reassemble internet fragments.
-
- One example of use of the Don't Fragment feature is to down line
- load a small host. A small host could have a boot strap program
- that accepts a datagram stores it in memory and then executes it.
-
- The fragmentation and reassembly procedures are most easily
- described by examples. The following procedures are example
- implementations.
-
- General notation in the following pseudo programs: "=<" means "less
- than or equal", "#" means "not equal", "=" means "equal", "<-" means
- "is set to". Also, "x to y" includes x and excludes y; for example,
- "4 to 7" would include 4, 5, and 6 (but not 7).
-
-
-
- [Page 25]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- An Example Fragmentation Procedure
-
- The maximum sized datagram that can be transmitted through the
- next network is called the maximum transmission unit (MTU).
-
- If the total length is less than or equal the maximum transmission
- unit then submit this datagram to the next step in datagram
- processing; otherwise cut the datagram into two fragments, the
- first fragment being the maximum size, and the second fragment
- being the rest of the datagram. The first fragment is submitted
- to the next step in datagram processing, while the second fragment
- is submitted to this procedure in case it is still too large.
-
- Notation:
-
- FO - Fragment Offset
- IHL - Internet Header Length
- DF - Don't Fragment flag
- MF - More Fragments flag
- TL - Total Length
- OFO - Old Fragment Offset
- OIHL - Old Internet Header Length
- OMF - Old More Fragments flag
- OTL - Old Total Length
- NFB - Number of Fragment Blocks
- MTU - Maximum Transmission Unit
-
- Procedure:
-
- IF TL =< MTU THEN Submit this datagram to the next step
- in datagram processing ELSE IF DF = 1 THEN discard the
- datagram ELSE
- To produce the first fragment:
- (1) Copy the original internet header;
- (2) OIHL <- IHL; OTL <- TL; OFO <- FO; OMF <- MF;
- (3) NFB <- (MTU-IHL*4)/8;
- (4) Attach the first NFB*8 data octets;
- (5) Correct the header:
- MF <- 1; TL <- (IHL*4)+(NFB*8);
- Recompute Checksum;
- (6) Submit this fragment to the next step in
- datagram processing;
- To produce the second fragment:
- (7) Selectively copy the internet header (some options
- are not copied, see option definitions);
- (8) Append the remaining data;
- (9) Correct the header:
- IHL <- (((OIHL*4)-(length of options not copied))+3)/4;
-
-
-[Page 26]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- TL <- OTL - NFB*8 - (OIHL-IHL)*4);
- FO <- OFO + NFB; MF <- OMF; Recompute Checksum;
- (10) Submit this fragment to the fragmentation test; DONE.
-
- In the above procedure each fragment (except the last) was made
- the maximum allowable size. An alternative might produce less
- than the maximum size datagrams. For example, one could implement
- a fragmentation procedure that repeatly divided large datagrams in
- half until the resulting fragments were less than the maximum
- transmission unit size.
-
- An Example Reassembly Procedure
-
- For each datagram the buffer identifier is computed as the
- concatenation of the source, destination, protocol, and
- identification fields. If this is a whole datagram (that is both
- the fragment offset and the more fragments fields are zero), then
- any reassembly resources associated with this buffer identifier
- are released and the datagram is forwarded to the next step in
- datagram processing.
-
- If no other fragment with this buffer identifier is on hand then
- reassembly resources are allocated. The reassembly resources
- consist of a data buffer, a header buffer, a fragment block bit
- table, a total data length field, and a timer. The data from the
- fragment is placed in the data buffer according to its fragment
- offset and length, and bits are set in the fragment block bit
- table corresponding to the fragment blocks received.
-
- If this is the first fragment (that is the fragment offset is
- zero) this header is placed in the header buffer. If this is the
- last fragment ( that is the more fragments field is zero) the
- total data length is computed. If this fragment completes the
- datagram (tested by checking the bits set in the fragment block
- table), then the datagram is sent to the next step in datagram
- processing; otherwise the timer is set to the maximum of the
- current timer value and the value of the time to live field from
- this fragment; and the reassembly routine gives up control.
-
- If the timer runs out, the all reassembly resources for this
- buffer identifier are released. The initial setting of the timer
- is a lower bound on the reassembly waiting time. This is because
- the waiting time will be increased if the Time to Live in the
- arriving fragment is greater than the current timer value but will
- not be decreased if it is less. The maximum this timer value
- could reach is the maximum time to live (approximately 4.25
- minutes). The current recommendation for the initial timer
- setting is 15 seconds. This may be changed as experience with
-
-
- [Page 27]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- this protocol accumulates. Note that the choice of this parameter
- value is related to the buffer capacity available and the data
- rate of the transmission medium; that is, data rate times timer
- value equals buffer size (e.g., 10Kb/s X 15s = 150Kb).
-
- Notation:
-
- FO - Fragment Offset
- IHL - Internet Header Length
- MF - More Fragments flag
- TTL - Time To Live
- NFB - Number of Fragment Blocks
- TL - Total Length
- TDL - Total Data Length
- BUFID - Buffer Identifier
- RCVBT - Fragment Received Bit Table
- TLB - Timer Lower Bound
-
- Procedure:
-
- (1) BUFID <- source|destination|protocol|identification;
- (2) IF FO = 0 AND MF = 0
- (3) THEN IF buffer with BUFID is allocated
- (4) THEN flush all reassembly for this BUFID;
- (5) Submit datagram to next step; DONE.
- (6) ELSE IF no buffer with BUFID is allocated
- (7) THEN allocate reassembly resources
- with BUFID;
- TIMER <- TLB; TDL <- 0;
- (8) put data from fragment into data buffer with
- BUFID from octet FO*8 to
- octet (TL-(IHL*4))+FO*8;
- (9) set RCVBT bits from FO
- to FO+((TL-(IHL*4)+7)/8);
- (10) IF MF = 0 THEN TDL <- TL-(IHL*4)+(FO*8)
- (11) IF FO = 0 THEN put header in header buffer
- (12) IF TDL # 0
- (13) AND all RCVBT bits from 0
- to (TDL+7)/8 are set
- (14) THEN TL <- TDL+(IHL*4)
- (15) Submit datagram to next step;
- (16) free all reassembly resources
- for this BUFID; DONE.
- (17) TIMER <- MAX(TIMER,TTL);
- (18) give up until next fragment or timer expires;
- (19) timer expires: flush all reassembly with this BUFID; DONE.
-
- In the case that two or more fragments contain the same data
-
-
-[Page 28]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- either identically or through a partial overlap, this procedure
- will use the more recently arrived copy in the data buffer and
- datagram delivered.
-
- Identification
-
- The choice of the Identifier for a datagram is based on the need to
- provide a way to uniquely identify the fragments of a particular
- datagram. The protocol module assembling fragments judges fragments
- to belong to the same datagram if they have the same source,
- destination, protocol, and Identifier. Thus, the sender must choose
- the Identifier to be unique for this source, destination pair and
- protocol for the time the datagram (or any fragment of it) could be
- alive in the internet.
-
- It seems then that a sending protocol module needs to keep a table
- of Identifiers, one entry for each destination it has communicated
- with in the last maximum packet lifetime for the internet.
-
- However, since the Identifier field allows 65,536 different values,
- some host may be able to simply use unique identifiers independent
- of destination.
-
- It is appropriate for some higher level protocols to choose the
- identifier. For example, TCP protocol modules may retransmit an
- identical TCP segment, and the probability for correct reception
- would be enhanced if the retransmission carried the same identifier
- as the original transmission since fragments of either datagram
- could be used to construct a correct TCP segment.
-
- Type of Service
-
- The type of service (TOS) is for internet service quality selection.
- The type of service is specified along the abstract parameters
- precedence, delay, throughput, and reliability. These abstract
- parameters are to be mapped into the actual service parameters of
- the particular networks the datagram traverses.
-
- Precedence. An independent measure of the importance of this
- datagram.
-
- Delay. Prompt delivery is important for datagrams with this
- indication.
-
- Throughput. High data rate is important for datagrams with this
- indication.
-
-
-
-
- [Page 29]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- Reliability. A higher level of effort to ensure delivery is
- important for datagrams with this indication.
-
- For example, the ARPANET has a priority bit, and a choice between
- "standard" messages (type 0) and "uncontrolled" messages (type 3),
- (the choice between single packet and multipacket messages can also
- be considered a service parameter). The uncontrolled messages tend
- to be less reliably delivered and suffer less delay. Suppose an
- internet datagram is to be sent through the ARPANET. Let the
- internet type of service be given as:
-
- Precedence: 5
- Delay: 0
- Throughput: 1
- Reliability: 1
-
- In this example, the mapping of these parameters to those available
- for the ARPANET would be to set the ARPANET priority bit on since
- the Internet precedence is in the upper half of its range, to select
- standard messages since the throughput and reliability requirements
- are indicated and delay is not. More details are given on service
- mappings in "Service Mappings" [8].
-
- Time to Live
-
- The time to live is set by the sender to the maximum time the
- datagram is allowed to be in the internet system. If the datagram
- is in the internet system longer than the time to live, then the
- datagram must be destroyed.
-
- This field must be decreased at each point that the internet header
- is processed to reflect the time spent processing the datagram.
- Even if no local information is available on the time actually
- spent, the field must be decremented by 1. The time is measured in
- units of seconds (i.e. the value 1 means one second). Thus, the
- maximum time to live is 255 seconds or 4.25 minutes. Since every
- module that processes a datagram must decrease the TTL by at least
- one even if it process the datagram in less than a second, the TTL
- must be thought of only as an upper bound on the time a datagram may
- exist. The intention is to cause undeliverable datagrams to be
- discarded, and to bound the maximum datagram lifetime.
-
- Some higher level reliable connection protocols are based on
- assumptions that old duplicate datagrams will not arrive after a
- certain time elapses. The TTL is a way for such protocols to have
- an assurance that their assumption is met.
-
-
-
-
-[Page 30]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- Options
-
- The options are optional in each datagram, but required in
- implementations. That is, the presence or absence of an option is
- the choice of the sender, but each internet module must be able to
- parse every option. There can be several options present in the
- option field.
-
- The options might not end on a 32-bit boundary. The internet header
- must be filled out with octets of zeros. The first of these would
- be interpreted as the end-of-options option, and the remainder as
- internet header padding.
-
- Every internet module must be able to act on every option. The
- Security Option is required if classified, restricted, or
- compartmented traffic is to be passed.
-
- Checksum
-
- The internet header checksum is recomputed if the internet header is
- changed. For example, a reduction of the time to live, additions or
- changes to internet options, or due to fragmentation. This checksum
- at the internet level is intended to protect the internet header
- fields from transmission errors.
-
- There are some applications where a few data bit errors are
- acceptable while retransmission delays are not. If the internet
- protocol enforced data correctness such applications could not be
- supported.
-
- Errors
-
- Internet protocol errors may be reported via the ICMP messages [3].
-
-3.3. Interfaces
-
- The functional description of user interfaces to the IP is, at best,
- fictional, since every operating system will have different
- facilities. Consequently, we must warn readers that different IP
- implementations may have different user interfaces. However, all IPs
- must provide a certain minimum set of services to guarantee that all
- IP implementations can support the same protocol hierarchy. This
- section specifies the functional interfaces required of all IP
- implementations.
-
- Internet protocol interfaces on one side to the local network and on
- the other side to either a higher level protocol or an application
- program. In the following, the higher level protocol or application
-
-
- [Page 31]
-
-
- September 1981
-Internet Protocol
-Specification
-
-
-
- program (or even a gateway program) will be called the "user" since it
- is using the internet module. Since internet protocol is a datagram
- protocol, there is minimal memory or state maintained between datagram
- transmissions, and each call on the internet protocol module by the
- user supplies all information necessary for the IP to perform the
- service requested.
-
- An Example Upper Level Interface
-
- The following two example calls satisfy the requirements for the user
- to internet protocol module communication ("=>" means returns):
-
- SEND (src, dst, prot, TOS, TTL, BufPTR, len, Id, DF, opt => result)
-
- where:
-
- src = source address
- dst = destination address
- prot = protocol
- TOS = type of service
- TTL = time to live
- BufPTR = buffer pointer
- len = length of buffer
- Id = Identifier
- DF = Don't Fragment
- opt = option data
- result = response
- OK = datagram sent ok
- Error = error in arguments or local network error
-
- Note that the precedence is included in the TOS and the
- security/compartment is passed as an option.
-
- RECV (BufPTR, prot, => result, src, dst, TOS, len, opt)
-
- where:
-
- BufPTR = buffer pointer
- prot = protocol
- result = response
- OK = datagram received ok
- Error = error in arguments
- len = length of buffer
- src = source address
- dst = destination address
- TOS = type of service
- opt = option data
-
-
-
-[Page 32]
-
-
-September 1981
- Internet Protocol
- Specification
-
-
-
- When the user sends a datagram, it executes the SEND call supplying
- all the arguments. The internet protocol module, on receiving this
- call, checks the arguments and prepares and sends the message. If the
- arguments are good and the datagram is accepted by the local network,
- the call returns successfully. If either the arguments are bad, or
- the datagram is not accepted by the local network, the call returns
- unsuccessfully. On unsuccessful returns, a reasonable report must be
- made as to the cause of the problem, but the details of such reports
- are up to individual implementations.
-
- When a datagram arrives at the internet protocol module from the local
- network, either there is a pending RECV call from the user addressed
- or there is not. In the first case, the pending call is satisfied by
- passing the information from the datagram to the user. In the second
- case, the user addressed is notified of a pending datagram. If the
- user addressed does not exist, an ICMP error message is returned to
- the sender, and the data is discarded.
-
- The notification of a user may be via a pseudo interrupt or similar
- mechanism, as appropriate in the particular operating system
- environment of the implementation.
-
- A user's RECV call may then either be immediately satisfied by a
- pending datagram, or the call may be pending until a datagram arrives.
-
- The source address is included in the send call in case the sending
- host has several addresses (multiple physical connections or logical
- addresses). The internet module must check to see that the source
- address is one of the legal address for this host.
-
- An implementation may also allow or require a call to the internet
- module to indicate interest in or reserve exclusive use of a class of
- datagrams (e.g., all those with a certain value in the protocol
- field).
-
- This section functionally characterizes a USER/IP interface. The
- notation used is similar to most procedure of function calls in high
- level languages, but this usage is not meant to rule out trap type
- service calls (e.g., SVCs, UUOs, EMTs), or any other form of
- interprocess communication.
-
-
-
-
-
-
-
-
-
-
- [Page 33]
-
-
- September 1981
-Internet Protocol
-
-
-
-APPENDIX A: Examples & Scenarios
-
-Example 1:
-
- This is an example of the minimal data carrying internet datagram:
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Ver= 4 |IHL= 5 |Type of Service| Total Length = 21 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identification = 111 |Flg=0| Fragment Offset = 0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time = 123 | Protocol = 1 | header checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | source address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | destination address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+
-
- Example Internet Datagram
-
- Figure 5.
-
- Note that each tick mark represents one bit position.
-
- This is a internet datagram in version 4 of internet protocol; the
- internet header consists of five 32 bit words, and the total length of
- the datagram is 21 octets. This datagram is a complete datagram (not
- a fragment).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 34]
-
-
-September 1981
- Internet Protocol
-
-
-
-Example 2:
-
- In this example, we show first a moderate size internet datagram (452
- data octets), then two internet fragments that might result from the
- fragmentation of this datagram if the maximum sized transmission
- allowed were 280 octets.
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Ver= 4 |IHL= 5 |Type of Service| Total Length = 472 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identification = 111 |Flg=0| Fragment Offset = 0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time = 123 | Protocol = 6 | header checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | source address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | destination address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- \ \
- \ \
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Example Internet Datagram
-
- Figure 6.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 35]
-
-
- September 1981
-Internet Protocol
-
-
-
- Now the first fragment that results from splitting the datagram after
- 256 data octets.
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Ver= 4 |IHL= 5 |Type of Service| Total Length = 276 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identification = 111 |Flg=1| Fragment Offset = 0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time = 119 | Protocol = 6 | Header Checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | source address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | destination address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- \ \
- \ \
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Example Internet Fragment
-
- Figure 7.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 36]
-
-
-September 1981
- Internet Protocol
-
-
-
- And the second fragment.
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Ver= 4 |IHL= 5 |Type of Service| Total Length = 216 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identification = 111 |Flg=0| Fragment Offset = 32 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time = 119 | Protocol = 6 | Header Checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | source address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | destination address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- \ \
- \ \
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Example Internet Fragment
-
- Figure 8.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 37]
-
-
- September 1981
-Internet Protocol
-
-
-
-Example 3:
-
- Here, we show an example of a datagram containing options:
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Ver= 4 |IHL= 8 |Type of Service| Total Length = 576 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identification = 111 |Flg=0| Fragment Offset = 0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time = 123 | Protocol = 6 | Header Checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | source address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | destination address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Opt. Code = x | Opt. Len.= 3 | option value | Opt. Code = x |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Opt. Len. = 4 | option value | Opt. Code = 1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Opt. Code = y | Opt. Len. = 3 | option value | Opt. Code = 0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- \ \
- \ \
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Example Internet Datagram
-
- Figure 9.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 38]
-
-
-September 1981
- Internet Protocol
-
-
-
-APPENDIX B: Data Transmission Order
-
-The order of transmission of the header and data described in this
-document is resolved to the octet level. Whenever a diagram shows a
-group of octets, the order of transmission of those octets is the normal
-order in which they are read in English. For example, in the following
-diagram the octets are transmitted in the order they are numbered.
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 1 | 2 | 3 | 4 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 5 | 6 | 7 | 8 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 9 | 10 | 11 | 12 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Transmission Order of Bytes
-
- Figure 10.
-
-Whenever an octet represents a numeric quantity the left most bit in the
-diagram is the high order or most significant bit. That is, the bit
-labeled 0 is the most significant bit. For example, the following
-diagram represents the value 170 (decimal).
-
-
- 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+
- |1 0 1 0 1 0 1 0|
- +-+-+-+-+-+-+-+-+
-
- Significance of Bits
-
- Figure 11.
-
-Similarly, whenever a multi-octet field represents a numeric quantity
-the left most bit of the whole field is the most significant bit. When
-a multi-octet quantity is transmitted the most significant octet is
-transmitted first.
-
-
-
-
-
-
-
-
-
- [Page 39]
-
-
- September 1981
-Internet Protocol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 40]
-
-
-September 1981
- Internet Protocol
-
-
-
- GLOSSARY
-
-
-
-1822
- BBN Report 1822, "The Specification of the Interconnection of
- a Host and an IMP". The specification of interface between a
- host and the ARPANET.
-
-ARPANET leader
- The control information on an ARPANET message at the host-IMP
- interface.
-
-ARPANET message
- The unit of transmission between a host and an IMP in the
- ARPANET. The maximum size is about 1012 octets (8096 bits).
-
-ARPANET packet
- A unit of transmission used internally in the ARPANET between
- IMPs. The maximum size is about 126 octets (1008 bits).
-
-Destination
- The destination address, an internet header field.
-
-DF
- The Don't Fragment bit carried in the flags field.
-
-Flags
- An internet header field carrying various control flags.
-
-Fragment Offset
- This internet header field indicates where in the internet
- datagram a fragment belongs.
-
-GGP
- Gateway to Gateway Protocol, the protocol used primarily
- between gateways to control routing and other gateway
- functions.
-
-header
- Control information at the beginning of a message, segment,
- datagram, packet or block of data.
-
-ICMP
- Internet Control Message Protocol, implemented in the internet
- module, the ICMP is used from gateways to hosts and between
- hosts to report errors and make routing suggestions.
-
-
-
-
- [Page 41]
-
-
- September 1981
-Internet Protocol
-Glossary
-
-
-
-Identification
- An internet header field carrying the identifying value
- assigned by the sender to aid in assembling the fragments of a
- datagram.
-
-IHL
- The internet header field Internet Header Length is the length
- of the internet header measured in 32 bit words.
-
-IMP
- The Interface Message Processor, the packet switch of the
- ARPANET.
-
-Internet Address
- A four octet (32 bit) source or destination address consisting
- of a Network field and a Local Address field.
-
-internet datagram
- The unit of data exchanged between a pair of internet modules
- (includes the internet header).
-
-internet fragment
- A portion of the data of an internet datagram with an internet
- header.
-
-Local Address
- The address of a host within a network. The actual mapping of
- an internet local address on to the host addresses in a
- network is quite general, allowing for many to one mappings.
-
-MF
- The More-Fragments Flag carried in the internet header flags
- field.
-
-module
- An implementation, usually in software, of a protocol or other
- procedure.
-
-more-fragments flag
- A flag indicating whether or not this internet datagram
- contains the end of an internet datagram, carried in the
- internet header Flags field.
-
-NFB
- The Number of Fragment Blocks in a the data portion of an
- internet fragment. That is, the length of a portion of data
- measured in 8 octet units.
-
-
-
-[Page 42]
-
-
-September 1981
- Internet Protocol
- Glossary
-
-
-
-octet
- An eight bit byte.
-
-Options
- The internet header Options field may contain several options,
- and each option may be several octets in length.
-
-Padding
- The internet header Padding field is used to ensure that the
- data begins on 32 bit word boundary. The padding is zero.
-
-Protocol
- In this document, the next higher level protocol identifier,
- an internet header field.
-
-Rest
- The local address portion of an Internet Address.
-
-Source
- The source address, an internet header field.
-
-TCP
- Transmission Control Protocol: A host-to-host protocol for
- reliable communication in internet environments.
-
-TCP Segment
- The unit of data exchanged between TCP modules (including the
- TCP header).
-
-TFTP
- Trivial File Transfer Protocol: A simple file transfer
- protocol built on UDP.
-
-Time to Live
- An internet header field which indicates the upper bound on
- how long this internet datagram may exist.
-
-TOS
- Type of Service
-
-Total Length
- The internet header field Total Length is the length of the
- datagram in octets including internet header and data.
-
-TTL
- Time to Live
-
-
-
-
- [Page 43]
-
-
- September 1981
-Internet Protocol
-Glossary
-
-
-
-Type of Service
- An internet header field which indicates the type (or quality)
- of service for this internet datagram.
-
-UDP
- User Datagram Protocol: A user level protocol for transaction
- oriented applications.
-
-User
- The user of the internet protocol. This may be a higher level
- protocol module, an application program, or a gateway program.
-
-Version
- The Version field indicates the format of the internet header.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 44]
-
-
-September 1981
- Internet Protocol
-
-
-
- REFERENCES
-
-
-
-[1] Cerf, V., "The Catenet Model for Internetworking," Information
- Processing Techniques Office, Defense Advanced Research Projects
- Agency, IEN 48, July 1978.
-
-[2] Bolt Beranek and Newman, "Specification for the Interconnection of
- a Host and an IMP," BBN Technical Report 1822, Revised May 1978.
-
-[3] Postel, J., "Internet Control Message Protocol - DARPA Internet
- Program Protocol Specification," RFC 792, USC/Information Sciences
- Institute, September 1981.
-
-[4] Shoch, J., "Inter-Network Naming, Addressing, and Routing,"
- COMPCON, IEEE Computer Society, Fall 1978.
-
-[5] Postel, J., "Address Mappings," RFC 796, USC/Information Sciences
- Institute, September 1981.
-
-[6] Shoch, J., "Packet Fragmentation in Inter-Network Protocols,"
- Computer Networks, v. 3, n. 1, February 1979.
-
-[7] Strazisar, V., "How to Build a Gateway", IEN 109, Bolt Beranek and
- Newman, August 1979.
-
-[8] Postel, J., "Service Mappings," RFC 795, USC/Information Sciences
- Institute, September 1981.
-
-[9] Postel, J., "Assigned Numbers," RFC 790, USC/Information Sciences
- Institute, September 1981.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 45]
-
diff --git a/doc/rfc793.txt b/doc/rfc793.txt
deleted file mode 100644
index 603a78c..0000000
--- a/doc/rfc793.txt
+++ /dev/null
@@ -1,5247 +0,0 @@
-
-
-RFC: 793
-
-
-
-
-
-
-
- TRANSMISSION CONTROL PROTOCOL
-
-
- DARPA INTERNET PROGRAM
-
- PROTOCOL SPECIFICATION
-
-
-
- September 1981
-
-
-
-
-
-
-
-
-
-
-
-
-
- prepared for
-
- Defense Advanced Research Projects Agency
- Information Processing Techniques Office
- 1400 Wilson Boulevard
- Arlington, Virginia 22209
-
-
-
-
-
-
-
- by
-
- Information Sciences Institute
- University of Southern California
- 4676 Admiralty Way
- Marina del Rey, California 90291
-
-
-
-September 1981
- Transmission Control Protocol
-
-
-
- TABLE OF CONTENTS
-
- PREFACE ........................................................ iii
-
-1. INTRODUCTION ..................................................... 1
-
- 1.1 Motivation .................................................... 1
- 1.2 Scope ......................................................... 2
- 1.3 About This Document ........................................... 2
- 1.4 Interfaces .................................................... 3
- 1.5 Operation ..................................................... 3
-
-2. PHILOSOPHY ....................................................... 7
-
- 2.1 Elements of the Internetwork System ........................... 7
- 2.2 Model of Operation ............................................ 7
- 2.3 The Host Environment .......................................... 8
- 2.4 Interfaces .................................................... 9
- 2.5 Relation to Other Protocols ................................... 9
- 2.6 Reliable Communication ........................................ 9
- 2.7 Connection Establishment and Clearing ........................ 10
- 2.8 Data Communication ........................................... 12
- 2.9 Precedence and Security ...................................... 13
- 2.10 Robustness Principle ......................................... 13
-
-3. FUNCTIONAL SPECIFICATION ........................................ 15
-
- 3.1 Header Format ................................................ 15
- 3.2 Terminology .................................................. 19
- 3.3 Sequence Numbers ............................................. 24
- 3.4 Establishing a connection .................................... 30
- 3.5 Closing a Connection ......................................... 37
- 3.6 Precedence and Security ...................................... 40
- 3.7 Data Communication ........................................... 40
- 3.8 Interfaces ................................................... 44
- 3.9 Event Processing ............................................. 52
-
-GLOSSARY ............................................................ 79
-
-REFERENCES .......................................................... 85
-
-
-
-
-
-
-
-
-
-
-
- [Page i]
-
-
- September 1981
-Transmission Control Protocol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page ii]
-
-
-September 1981
- Transmission Control Protocol
-
-
-
- PREFACE
-
-
-
-This document describes the DoD Standard Transmission Control Protocol
-(TCP). There have been nine earlier editions of the ARPA TCP
-specification on which this standard is based, and the present text
-draws heavily from them. There have been many contributors to this work
-both in terms of concepts and in terms of text. This edition clarifies
-several details and removes the end-of-letter buffer-size adjustments,
-and redescribes the letter mechanism as a push function.
-
- Jon Postel
-
- Editor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page iii]
-
-
-
-
-RFC: 793
-Replaces: RFC 761
-IENs: 129, 124, 112, 81,
-55, 44, 40, 27, 21, 5
-
- TRANSMISSION CONTROL PROTOCOL
-
- DARPA INTERNET PROGRAM
- PROTOCOL SPECIFICATION
-
-
-
- 1. INTRODUCTION
-
-The Transmission Control Protocol (TCP) is intended for use as a highly
-reliable host-to-host protocol between hosts in packet-switched computer
-communication networks, and in interconnected systems of such networks.
-
-This document describes the functions to be performed by the
-Transmission Control Protocol, the program that implements it, and its
-interface to programs or users that require its services.
-
-1.1. Motivation
-
- Computer communication systems are playing an increasingly important
- role in military, government, and civilian environments. This
- document focuses its attention primarily on military computer
- communication requirements, especially robustness in the presence of
- communication unreliability and availability in the presence of
- congestion, but many of these problems are found in the civilian and
- government sector as well.
-
- As strategic and tactical computer communication networks are
- developed and deployed, it is essential to provide means of
- interconnecting them and to provide standard interprocess
- communication protocols which can support a broad range of
- applications. In anticipation of the need for such standards, the
- Deputy Undersecretary of Defense for Research and Engineering has
- declared the Transmission Control Protocol (TCP) described herein to
- be a basis for DoD-wide inter-process communication protocol
- standardization.
-
- TCP is a connection-oriented, end-to-end reliable protocol designed to
- fit into a layered hierarchy of protocols which support multi-network
- applications. The TCP provides for reliable inter-process
- communication between pairs of processes in host computers attached to
- distinct but interconnected computer communication networks. Very few
- assumptions are made as to the reliability of the communication
- protocols below the TCP layer. TCP assumes it can obtain a simple,
- potentially unreliable datagram service from the lower level
- protocols. In principle, the TCP should be able to operate above a
- wide spectrum of communication systems ranging from hard-wired
- connections to packet-switched or circuit-switched networks.
-
-
- [Page 1]
-
-
- September 1981
-Transmission Control Protocol
-Introduction
-
-
-
- TCP is based on concepts first described by Cerf and Kahn in [1]. The
- TCP fits into a layered protocol architecture just above a basic
- Internet Protocol [2] which provides a way for the TCP to send and
- receive variable-length segments of information enclosed in internet
- datagram "envelopes". The internet datagram provides a means for
- addressing source and destination TCPs in different networks. The
- internet protocol also deals with any fragmentation or reassembly of
- the TCP segments required to achieve transport and delivery through
- multiple networks and interconnecting gateways. The internet protocol
- also carries information on the precedence, security classification
- and compartmentation of the TCP segments, so this information can be
- communicated end-to-end across multiple networks.
-
- Protocol Layering
-
- +---------------------+
- | higher-level |
- +---------------------+
- | TCP |
- +---------------------+
- | internet protocol |
- +---------------------+
- |communication network|
- +---------------------+
-
- Figure 1
-
- Much of this document is written in the context of TCP implementations
- which are co-resident with higher level protocols in the host
- computer. Some computer systems will be connected to networks via
- front-end computers which house the TCP and internet protocol layers,
- as well as network specific software. The TCP specification describes
- an interface to the higher level protocols which appears to be
- implementable even for the front-end case, as long as a suitable
- host-to-front end protocol is implemented.
-
-1.2. Scope
-
- The TCP is intended to provide a reliable process-to-process
- communication service in a multinetwork environment. The TCP is
- intended to be a host-to-host protocol in common use in multiple
- networks.
-
-1.3. About this Document
-
- This document represents a specification of the behavior required of
- any TCP implementation, both in its interactions with higher level
- protocols and in its interactions with other TCPs. The rest of this
-
-
-[Page 2]
-
-
-September 1981
- Transmission Control Protocol
- Introduction
-
-
-
- section offers a very brief view of the protocol interfaces and
- operation. Section 2 summarizes the philosophical basis for the TCP
- design. Section 3 offers both a detailed description of the actions
- required of TCP when various events occur (arrival of new segments,
- user calls, errors, etc.) and the details of the formats of TCP
- segments.
-
-1.4. Interfaces
-
- The TCP interfaces on one side to user or application processes and on
- the other side to a lower level protocol such as Internet Protocol.
-
- The interface between an application process and the TCP is
- illustrated in reasonable detail. This interface consists of a set of
- calls much like the calls an operating system provides to an
- application process for manipulating files. For example, there are
- calls to open and close connections and to send and receive data on
- established connections. It is also expected that the TCP can
- asynchronously communicate with application programs. Although
- considerable freedom is permitted to TCP implementors to design
- interfaces which are appropriate to a particular operating system
- environment, a minimum functionality is required at the TCP/user
- interface for any valid implementation.
-
- The interface between TCP and lower level protocol is essentially
- unspecified except that it is assumed there is a mechanism whereby the
- two levels can asynchronously pass information to each other.
- Typically, one expects the lower level protocol to specify this
- interface. TCP is designed to work in a very general environment of
- interconnected networks. The lower level protocol which is assumed
- throughout this document is the Internet Protocol [2].
-
-1.5. Operation
-
- As noted above, the primary purpose of the TCP is to provide reliable,
- securable logical circuit or connection service between pairs of
- processes. To provide this service on top of a less reliable internet
- communication system requires facilities in the following areas:
-
- Basic Data Transfer
- Reliability
- Flow Control
- Multiplexing
- Connections
- Precedence and Security
-
- The basic operation of the TCP in each of these areas is described in
- the following paragraphs.
-
-
- [Page 3]
-
-
- September 1981
-Transmission Control Protocol
-Introduction
-
-
-
- Basic Data Transfer:
-
- The TCP is able to transfer a continuous stream of octets in each
- direction between its users by packaging some number of octets into
- segments for transmission through the internet system. In general,
- the TCPs decide when to block and forward data at their own
- convenience.
-
- Sometimes users need to be sure that all the data they have
- submitted to the TCP has been transmitted. For this purpose a push
- function is defined. To assure that data submitted to a TCP is
- actually transmitted the sending user indicates that it should be
- pushed through to the receiving user. A push causes the TCPs to
- promptly forward and deliver data up to that point to the receiver.
- The exact push point might not be visible to the receiving user and
- the push function does not supply a record boundary marker.
-
- Reliability:
-
- The TCP must recover from data that is damaged, lost, duplicated, or
- delivered out of order by the internet communication system. This
- is achieved by assigning a sequence number to each octet
- transmitted, and requiring a positive acknowledgment (ACK) from the
- receiving TCP. If the ACK is not received within a timeout
- interval, the data is retransmitted. At the receiver, the sequence
- numbers are used to correctly order segments that may be received
- out of order and to eliminate duplicates. Damage is handled by
- adding a checksum to each segment transmitted, checking it at the
- receiver, and discarding damaged segments.
-
- As long as the TCPs continue to function properly and the internet
- system does not become completely partitioned, no transmission
- errors will affect the correct delivery of data. TCP recovers from
- internet communication system errors.
-
- Flow Control:
-
- TCP provides a means for the receiver to govern the amount of data
- sent by the sender. This is achieved by returning a "window" with
- every ACK indicating a range of acceptable sequence numbers beyond
- the last segment successfully received. The window indicates an
- allowed number of octets that the sender may transmit before
- receiving further permission.
-
-
-
-
-
-
-
-[Page 4]
-
-
-September 1981
- Transmission Control Protocol
- Introduction
-
-
-
- Multiplexing:
-
- To allow for many processes within a single Host to use TCP
- communication facilities simultaneously, the TCP provides a set of
- addresses or ports within each host. Concatenated with the network
- and host addresses from the internet communication layer, this forms
- a socket. A pair of sockets uniquely identifies each connection.
- That is, a socket may be simultaneously used in multiple
- connections.
-
- The binding of ports to processes is handled independently by each
- Host. However, it proves useful to attach frequently used processes
- (e.g., a "logger" or timesharing service) to fixed sockets which are
- made known to the public. These services can then be accessed
- through the known addresses. Establishing and learning the port
- addresses of other processes may involve more dynamic mechanisms.
-
- Connections:
-
- The reliability and flow control mechanisms described above require
- that TCPs initialize and maintain certain status information for
- each data stream. The combination of this information, including
- sockets, sequence numbers, and window sizes, is called a connection.
- Each connection is uniquely specified by a pair of sockets
- identifying its two sides.
-
- When two processes wish to communicate, their TCP's must first
- establish a connection (initialize the status information on each
- side). When their communication is complete, the connection is
- terminated or closed to free the resources for other uses.
-
- Since connections must be established between unreliable hosts and
- over the unreliable internet communication system, a handshake
- mechanism with clock-based sequence numbers is used to avoid
- erroneous initialization of connections.
-
- Precedence and Security:
-
- The users of TCP may indicate the security and precedence of their
- communication. Provision is made for default values to be used when
- these features are not needed.
-
-
-
-
-
-
-
-
-
- [Page 5]
-
-
- September 1981
-Transmission Control Protocol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 6]
-
-
-September 1981
- Transmission Control Protocol
-
-
-
- 2. PHILOSOPHY
-
-2.1. Elements of the Internetwork System
-
- The internetwork environment consists of hosts connected to networks
- which are in turn interconnected via gateways. It is assumed here
- that the networks may be either local networks (e.g., the ETHERNET) or
- large networks (e.g., the ARPANET), but in any case are based on
- packet switching technology. The active agents that produce and
- consume messages are processes. Various levels of protocols in the
- networks, the gateways, and the hosts support an interprocess
- communication system that provides two-way data flow on logical
- connections between process ports.
-
- The term packet is used generically here to mean the data of one
- transaction between a host and its network. The format of data blocks
- exchanged within the a network will generally not be of concern to us.
-
- Hosts are computers attached to a network, and from the communication
- network's point of view, are the sources and destinations of packets.
- Processes are viewed as the active elements in host computers (in
- accordance with the fairly common definition of a process as a program
- in execution). Even terminals and files or other I/O devices are
- viewed as communicating with each other through the use of processes.
- Thus, all communication is viewed as inter-process communication.
-
- Since a process may need to distinguish among several communication
- streams between itself and another process (or processes), we imagine
- that each process may have a number of ports through which it
- communicates with the ports of other processes.
-
-2.2. Model of Operation
-
- Processes transmit data by calling on the TCP and passing buffers of
- data as arguments. The TCP packages the data from these buffers into
- segments and calls on the internet module to transmit each segment to
- the destination TCP. The receiving TCP places the data from a segment
- into the receiving user's buffer and notifies the receiving user. The
- TCPs include control information in the segments which they use to
- ensure reliable ordered data transmission.
-
- The model of internet communication is that there is an internet
- protocol module associated with each TCP which provides an interface
- to the local network. This internet module packages TCP segments
- inside internet datagrams and routes these datagrams to a destination
- internet module or intermediate gateway. To transmit the datagram
- through the local network, it is embedded in a local network packet.
-
- The packet switches may perform further packaging, fragmentation, or
-
-
- [Page 7]
-
-
- September 1981
-Transmission Control Protocol
-Philosophy
-
-
-
- other operations to achieve the delivery of the local packet to the
- destination internet module.
-
- At a gateway between networks, the internet datagram is "unwrapped"
- from its local packet and examined to determine through which network
- the internet datagram should travel next. The internet datagram is
- then "wrapped" in a local packet suitable to the next network and
- routed to the next gateway, or to the final destination.
-
- A gateway is permitted to break up an internet datagram into smaller
- internet datagram fragments if this is necessary for transmission
- through the next network. To do this, the gateway produces a set of
- internet datagrams; each carrying a fragment. Fragments may be
- further broken into smaller fragments at subsequent gateways. The
- internet datagram fragment format is designed so that the destination
- internet module can reassemble fragments into internet datagrams.
-
- A destination internet module unwraps the segment from the datagram
- (after reassembling the datagram, if necessary) and passes it to the
- destination TCP.
-
- This simple model of the operation glosses over many details. One
- important feature is the type of service. This provides information
- to the gateway (or internet module) to guide it in selecting the
- service parameters to be used in traversing the next network.
- Included in the type of service information is the precedence of the
- datagram. Datagrams may also carry security information to permit
- host and gateways that operate in multilevel secure environments to
- properly segregate datagrams for security considerations.
-
-2.3. The Host Environment
-
- The TCP is assumed to be a module in an operating system. The users
- access the TCP much like they would access the file system. The TCP
- may call on other operating system functions, for example, to manage
- data structures. The actual interface to the network is assumed to be
- controlled by a device driver module. The TCP does not call on the
- network device driver directly, but rather calls on the internet
- datagram protocol module which may in turn call on the device driver.
-
- The mechanisms of TCP do not preclude implementation of the TCP in a
- front-end processor. However, in such an implementation, a
- host-to-front-end protocol must provide the functionality to support
- the type of TCP-user interface described in this document.
-
-
-
-
-
-
-[Page 8]
-
-
-September 1981
- Transmission Control Protocol
- Philosophy
-
-
-
-2.4. Interfaces
-
- The TCP/user interface provides for calls made by the user on the TCP
- to OPEN or CLOSE a connection, to SEND or RECEIVE data, or to obtain
- STATUS about a connection. These calls are like other calls from user
- programs on the operating system, for example, the calls to open, read
- from, and close a file.
-
- The TCP/internet interface provides calls to send and receive
- datagrams addressed to TCP modules in hosts anywhere in the internet
- system. These calls have parameters for passing the address, type of
- service, precedence, security, and other control information.
-
-2.5. Relation to Other Protocols
-
- The following diagram illustrates the place of the TCP in the protocol
- hierarchy:
-
-
- +------+ +-----+ +-----+ +-----+
- |Telnet| | FTP | |Voice| ... | | Application Level
- +------+ +-----+ +-----+ +-----+
- | | | |
- +-----+ +-----+ +-----+
- | TCP | | RTP | ... | | Host Level
- +-----+ +-----+ +-----+
- | | |
- +-------------------------------+
- | Internet Protocol & ICMP | Gateway Level
- +-------------------------------+
- |
- +---------------------------+
- | Local Network Protocol | Network Level
- +---------------------------+
-
- Protocol Relationships
-
- Figure 2.
-
- It is expected that the TCP will be able to support higher level
- protocols efficiently. It should be easy to interface higher level
- protocols like the ARPANET Telnet or AUTODIN II THP to the TCP.
-
-2.6. Reliable Communication
-
- A stream of data sent on a TCP connection is delivered reliably and in
- order at the destination.
-
-
-
- [Page 9]
-
-
- September 1981
-Transmission Control Protocol
-Philosophy
-
-
-
- Transmission is made reliable via the use of sequence numbers and
- acknowledgments. Conceptually, each octet of data is assigned a
- sequence number. The sequence number of the first octet of data in a
- segment is transmitted with that segment and is called the segment
- sequence number. Segments also carry an acknowledgment number which
- is the sequence number of the next expected data octet of
- transmissions in the reverse direction. When the TCP transmits a
- segment containing data, it puts a copy on a retransmission queue and
- starts a timer; when the acknowledgment for that data is received, the
- segment is deleted from the queue. If the acknowledgment is not
- received before the timer runs out, the segment is retransmitted.
-
- An acknowledgment by TCP does not guarantee that the data has been
- delivered to the end user, but only that the receiving TCP has taken
- the responsibility to do so.
-
- To govern the flow of data between TCPs, a flow control mechanism is
- employed. The receiving TCP reports a "window" to the sending TCP.
- This window specifies the number of octets, starting with the
- acknowledgment number, that the receiving TCP is currently prepared to
- receive.
-
-2.7. Connection Establishment and Clearing
-
- To identify the separate data streams that a TCP may handle, the TCP
- provides a port identifier. Since port identifiers are selected
- independently by each TCP they might not be unique. To provide for
- unique addresses within each TCP, we concatenate an internet address
- identifying the TCP with a port identifier to create a socket which
- will be unique throughout all networks connected together.
-
- A connection is fully specified by the pair of sockets at the ends. A
- local socket may participate in many connections to different foreign
- sockets. A connection can be used to carry data in both directions,
- that is, it is "full duplex".
-
- TCPs are free to associate ports with processes however they choose.
- However, several basic concepts are necessary in any implementation.
- There must be well-known sockets which the TCP associates only with
- the "appropriate" processes by some means. We envision that processes
- may "own" ports, and that processes can initiate connections only on
- the ports they own. (Means for implementing ownership is a local
- issue, but we envision a Request Port user command, or a method of
- uniquely allocating a group of ports to a given process, e.g., by
- associating the high order bits of a port name with a given process.)
-
- A connection is specified in the OPEN call by the local port and
- foreign socket arguments. In return, the TCP supplies a (short) local
-
-
-[Page 10]
-
-
-September 1981
- Transmission Control Protocol
- Philosophy
-
-
-
- connection name by which the user refers to the connection in
- subsequent calls. There are several things that must be remembered
- about a connection. To store this information we imagine that there
- is a data structure called a Transmission Control Block (TCB). One
- implementation strategy would have the local connection name be a
- pointer to the TCB for this connection. The OPEN call also specifies
- whether the connection establishment is to be actively pursued, or to
- be passively waited for.
-
- A passive OPEN request means that the process wants to accept incoming
- connection requests rather than attempting to initiate a connection.
- Often the process requesting a passive OPEN will accept a connection
- request from any caller. In this case a foreign socket of all zeros
- is used to denote an unspecified socket. Unspecified foreign sockets
- are allowed only on passive OPENs.
-
- A service process that wished to provide services for unknown other
- processes would issue a passive OPEN request with an unspecified
- foreign socket. Then a connection could be made with any process that
- requested a connection to this local socket. It would help if this
- local socket were known to be associated with this service.
-
- Well-known sockets are a convenient mechanism for a priori associating
- a socket address with a standard service. For instance, the
- "Telnet-Server" process is permanently assigned to a particular
- socket, and other sockets are reserved for File Transfer, Remote Job
- Entry, Text Generator, Echoer, and Sink processes (the last three
- being for test purposes). A socket address might be reserved for
- access to a "Look-Up" service which would return the specific socket
- at which a newly created service would be provided. The concept of a
- well-known socket is part of the TCP specification, but the assignment
- of sockets to services is outside this specification. (See [4].)
-
- Processes can issue passive OPENs and wait for matching active OPENs
- from other processes and be informed by the TCP when connections have
- been established. Two processes which issue active OPENs to each
- other at the same time will be correctly connected. This flexibility
- is critical for the support of distributed computing in which
- components act asynchronously with respect to each other.
-
- There are two principal cases for matching the sockets in the local
- passive OPENs and an foreign active OPENs. In the first case, the
- local passive OPENs has fully specified the foreign socket. In this
- case, the match must be exact. In the second case, the local passive
- OPENs has left the foreign socket unspecified. In this case, any
- foreign socket is acceptable as long as the local sockets match.
- Other possibilities include partially restricted matches.
-
-
-
- [Page 11]
-
-
- September 1981
-Transmission Control Protocol
-Philosophy
-
-
-
- If there are several pending passive OPENs (recorded in TCBs) with the
- same local socket, an foreign active OPEN will be matched to a TCB
- with the specific foreign socket in the foreign active OPEN, if such a
- TCB exists, before selecting a TCB with an unspecified foreign socket.
-
- The procedures to establish connections utilize the synchronize (SYN)
- control flag and involves an exchange of three messages. This
- exchange has been termed a three-way hand shake [3].
-
- A connection is initiated by the rendezvous of an arriving segment
- containing a SYN and a waiting TCB entry each created by a user OPEN
- command. The matching of local and foreign sockets determines when a
- connection has been initiated. The connection becomes "established"
- when sequence numbers have been synchronized in both directions.
-
- The clearing of a connection also involves the exchange of segments,
- in this case carrying the FIN control flag.
-
-2.8. Data Communication
-
- The data that flows on a connection may be thought of as a stream of
- octets. The sending user indicates in each SEND call whether the data
- in that call (and any preceeding calls) should be immediately pushed
- through to the receiving user by the setting of the PUSH flag.
-
- A sending TCP is allowed to collect data from the sending user and to
- send that data in segments at its own convenience, until the push
- function is signaled, then it must send all unsent data. When a
- receiving TCP sees the PUSH flag, it must not wait for more data from
- the sending TCP before passing the data to the receiving process.
-
- There is no necessary relationship between push functions and segment
- boundaries. The data in any particular segment may be the result of a
- single SEND call, in whole or part, or of multiple SEND calls.
-
- The purpose of push function and the PUSH flag is to push data through
- from the sending user to the receiving user. It does not provide a
- record service.
-
- There is a coupling between the push function and the use of buffers
- of data that cross the TCP/user interface. Each time a PUSH flag is
- associated with data placed into the receiving user's buffer, the
- buffer is returned to the user for processing even if the buffer is
- not filled. If data arrives that fills the user's buffer before a
- PUSH is seen, the data is passed to the user in buffer size units.
-
- TCP also provides a means to communicate to the receiver of data that
- at some point further along in the data stream than the receiver is
-
-
-[Page 12]
-
-
-September 1981
- Transmission Control Protocol
- Philosophy
-
-
-
- currently reading there is urgent data. TCP does not attempt to
- define what the user specifically does upon being notified of pending
- urgent data, but the general notion is that the receiving process will
- take action to process the urgent data quickly.
-
-2.9. Precedence and Security
-
- The TCP makes use of the internet protocol type of service field and
- security option to provide precedence and security on a per connection
- basis to TCP users. Not all TCP modules will necessarily function in
- a multilevel secure environment; some may be limited to unclassified
- use only, and others may operate at only one security level and
- compartment. Consequently, some TCP implementations and services to
- users may be limited to a subset of the multilevel secure case.
-
- TCP modules which operate in a multilevel secure environment must
- properly mark outgoing segments with the security, compartment, and
- precedence. Such TCP modules must also provide to their users or
- higher level protocols such as Telnet or THP an interface to allow
- them to specify the desired security level, compartment, and
- precedence of connections.
-
-2.10. Robustness Principle
-
- TCP implementations will follow a general principle of robustness: be
- conservative in what you do, be liberal in what you accept from
- others.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 13]
-
-
- September 1981
-Transmission Control Protocol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 14]
-
-
-September 1981
- Transmission Control Protocol
-
-
-
- 3. FUNCTIONAL SPECIFICATION
-
-3.1. Header Format
-
- TCP segments are sent as internet datagrams. The Internet Protocol
- header carries several information fields, including the source and
- destination host addresses [2]. A TCP header follows the internet
- header, supplying information specific to the TCP protocol. This
- division allows for the existence of host level protocols other than
- TCP.
-
- TCP Header Format
-
-
- 0 1 2 3
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Source Port | Destination Port |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Sequence Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Acknowledgment Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data | |U|A|P|R|S|F| |
- | Offset| Reserved |R|C|S|S|Y|I| Window |
- | | |G|K|H|T|N|N| |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Checksum | Urgent Pointer |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options | Padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- TCP Header Format
-
- Note that one tick mark represents one bit position.
-
- Figure 3.
-
- Source Port: 16 bits
-
- The source port number.
-
- Destination Port: 16 bits
-
- The destination port number.
-
-
-
-
- [Page 15]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- Sequence Number: 32 bits
-
- The sequence number of the first data octet in this segment (except
- when SYN is present). If SYN is present the sequence number is the
- initial sequence number (ISN) and the first data octet is ISN+1.
-
- Acknowledgment Number: 32 bits
-
- If the ACK control bit is set this field contains the value of the
- next sequence number the sender of the segment is expecting to
- receive. Once a connection is established this is always sent.
-
- Data Offset: 4 bits
-
- The number of 32 bit words in the TCP Header. This indicates where
- the data begins. The TCP header (even one including options) is an
- integral number of 32 bits long.
-
- Reserved: 6 bits
-
- Reserved for future use. Must be zero.
-
- Control Bits: 6 bits (from left to right):
-
- URG: Urgent Pointer field significant
- ACK: Acknowledgment field significant
- PSH: Push Function
- RST: Reset the connection
- SYN: Synchronize sequence numbers
- FIN: No more data from sender
-
- Window: 16 bits
-
- The number of data octets beginning with the one indicated in the
- acknowledgment field which the sender of this segment is willing to
- accept.
-
- Checksum: 16 bits
-
- The checksum field is the 16 bit one's complement of the one's
- complement sum of all 16 bit words in the header and text. If a
- segment contains an odd number of header and text octets to be
- checksummed, the last octet is padded on the right with zeros to
- form a 16 bit word for checksum purposes. The pad is not
- transmitted as part of the segment. While computing the checksum,
- the checksum field itself is replaced with zeros.
-
- The checksum also covers a 96 bit pseudo header conceptually
-
-
-[Page 16]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- prefixed to the TCP header. This pseudo header contains the Source
- Address, the Destination Address, the Protocol, and TCP length.
- This gives the TCP protection against misrouted segments. This
- information is carried in the Internet Protocol and is transferred
- across the TCP/Network interface in the arguments or results of
- calls by the TCP on the IP.
-
- +--------+--------+--------+--------+
- | Source Address |
- +--------+--------+--------+--------+
- | Destination Address |
- +--------+--------+--------+--------+
- | zero | PTCL | TCP Length |
- +--------+--------+--------+--------+
-
- The TCP Length is the TCP header length plus the data length in
- octets (this is not an explicitly transmitted quantity, but is
- computed), and it does not count the 12 octets of the pseudo
- header.
-
- Urgent Pointer: 16 bits
-
- This field communicates the current value of the urgent pointer as a
- positive offset from the sequence number in this segment. The
- urgent pointer points to the sequence number of the octet following
- the urgent data. This field is only be interpreted in segments with
- the URG control bit set.
-
- Options: variable
-
- Options may occupy space at the end of the TCP header and are a
- multiple of 8 bits in length. All options are included in the
- checksum. An option may begin on any octet boundary. There are two
- cases for the format of an option:
-
- Case 1: A single octet of option-kind.
-
- Case 2: An octet of option-kind, an octet of option-length, and
- the actual option-data octets.
-
- The option-length counts the two octets of option-kind and
- option-length as well as the option-data octets.
-
- Note that the list of options may be shorter than the data offset
- field might imply. The content of the header beyond the
- End-of-Option option must be header padding (i.e., zero).
-
- A TCP must implement all options.
-
-
- [Page 17]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- Currently defined options include (kind indicated in octal):
-
- Kind Length Meaning
- ---- ------ -------
- 0 - End of option list.
- 1 - No-Operation.
- 2 4 Maximum Segment Size.
-
-
- Specific Option Definitions
-
- End of Option List
-
- +--------+
- |00000000|
- +--------+
- Kind=0
-
- This option code indicates the end of the option list. This
- might not coincide with the end of the TCP header according to
- the Data Offset field. This is used at the end of all options,
- not the end of each option, and need only be used if the end of
- the options would not otherwise coincide with the end of the TCP
- header.
-
- No-Operation
-
- +--------+
- |00000001|
- +--------+
- Kind=1
-
- This option code may be used between options, for example, to
- align the beginning of a subsequent option on a word boundary.
- There is no guarantee that senders will use this option, so
- receivers must be prepared to process options even if they do
- not begin on a word boundary.
-
- Maximum Segment Size
-
- +--------+--------+---------+--------+
- |00000010|00000100| max seg size |
- +--------+--------+---------+--------+
- Kind=2 Length=4
-
-
-
-
-
-
-[Page 18]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- Maximum Segment Size Option Data: 16 bits
-
- If this option is present, then it communicates the maximum
- receive segment size at the TCP which sends this segment.
- This field must only be sent in the initial connection request
- (i.e., in segments with the SYN control bit set). If this
- option is not used, any segment size is allowed.
-
- Padding: variable
-
- The TCP header padding is used to ensure that the TCP header ends
- and data begins on a 32 bit boundary. The padding is composed of
- zeros.
-
-3.2. Terminology
-
- Before we can discuss very much about the operation of the TCP we need
- to introduce some detailed terminology. The maintenance of a TCP
- connection requires the remembering of several variables. We conceive
- of these variables being stored in a connection record called a
- Transmission Control Block or TCB. Among the variables stored in the
- TCB are the local and remote socket numbers, the security and
- precedence of the connection, pointers to the user's send and receive
- buffers, pointers to the retransmit queue and to the current segment.
- In addition several variables relating to the send and receive
- sequence numbers are stored in the TCB.
-
- Send Sequence Variables
-
- SND.UNA - send unacknowledged
- SND.NXT - send next
- SND.WND - send window
- SND.UP - send urgent pointer
- SND.WL1 - segment sequence number used for last window update
- SND.WL2 - segment acknowledgment number used for last window
- update
- ISS - initial send sequence number
-
- Receive Sequence Variables
-
- RCV.NXT - receive next
- RCV.WND - receive window
- RCV.UP - receive urgent pointer
- IRS - initial receive sequence number
-
-
-
-
-
-
- [Page 19]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- The following diagrams may help to relate some of these variables to
- the sequence space.
-
- Send Sequence Space
-
- 1 2 3 4
- ----------|----------|----------|----------
- SND.UNA SND.NXT SND.UNA
- +SND.WND
-
- 1 - old sequence numbers which have been acknowledged
- 2 - sequence numbers of unacknowledged data
- 3 - sequence numbers allowed for new data transmission
- 4 - future sequence numbers which are not yet allowed
-
- Send Sequence Space
-
- Figure 4.
-
-
-
- The send window is the portion of the sequence space labeled 3 in
- figure 4.
-
- Receive Sequence Space
-
- 1 2 3
- ----------|----------|----------
- RCV.NXT RCV.NXT
- +RCV.WND
-
- 1 - old sequence numbers which have been acknowledged
- 2 - sequence numbers allowed for new reception
- 3 - future sequence numbers which are not yet allowed
-
- Receive Sequence Space
-
- Figure 5.
-
-
-
- The receive window is the portion of the sequence space labeled 2 in
- figure 5.
-
- There are also some variables used frequently in the discussion that
- take their values from the fields of the current segment.
-
-
-
-
-[Page 20]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- Current Segment Variables
-
- SEG.SEQ - segment sequence number
- SEG.ACK - segment acknowledgment number
- SEG.LEN - segment length
- SEG.WND - segment window
- SEG.UP - segment urgent pointer
- SEG.PRC - segment precedence value
-
- A connection progresses through a series of states during its
- lifetime. The states are: LISTEN, SYN-SENT, SYN-RECEIVED,
- ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK,
- TIME-WAIT, and the fictional state CLOSED. CLOSED is fictional
- because it represents the state when there is no TCB, and therefore,
- no connection. Briefly the meanings of the states are:
-
- LISTEN - represents waiting for a connection request from any remote
- TCP and port.
-
- SYN-SENT - represents waiting for a matching connection request
- after having sent a connection request.
-
- SYN-RECEIVED - represents waiting for a confirming connection
- request acknowledgment after having both received and sent a
- connection request.
-
- ESTABLISHED - represents an open connection, data received can be
- delivered to the user. The normal state for the data transfer phase
- of the connection.
-
- FIN-WAIT-1 - represents waiting for a connection termination request
- from the remote TCP, or an acknowledgment of the connection
- termination request previously sent.
-
- FIN-WAIT-2 - represents waiting for a connection termination request
- from the remote TCP.
-
- CLOSE-WAIT - represents waiting for a connection termination request
- from the local user.
-
- CLOSING - represents waiting for a connection termination request
- acknowledgment from the remote TCP.
-
- LAST-ACK - represents waiting for an acknowledgment of the
- connection termination request previously sent to the remote TCP
- (which includes an acknowledgment of its connection termination
- request).
-
-
-
- [Page 21]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- TIME-WAIT - represents waiting for enough time to pass to be sure
- the remote TCP received the acknowledgment of its connection
- termination request.
-
- CLOSED - represents no connection state at all.
-
- A TCP connection progresses from one state to another in response to
- events. The events are the user calls, OPEN, SEND, RECEIVE, CLOSE,
- ABORT, and STATUS; the incoming segments, particularly those
- containing the SYN, ACK, RST and FIN flags; and timeouts.
-
- The state diagram in figure 6 illustrates only state changes, together
- with the causing events and resulting actions, but addresses neither
- error conditions nor actions which are not connected with state
- changes. In a later section, more detail is offered with respect to
- the reaction of the TCP to events.
-
- NOTE BENE: this diagram is only a summary and must not be taken as
- the total specification.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 22]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
-
- +---------+ ---------\ active OPEN
- | CLOSED | \ -----------
- +---------+<---------\ \ create TCB
- | ^ \ \ snd SYN
- passive OPEN | | CLOSE \ \
- ------------ | | ---------- \ \
- create TCB | | delete TCB \ \
- V | \ \
- +---------+ CLOSE | \
- | LISTEN | ---------- | |
- +---------+ delete TCB | |
- rcv SYN | | SEND | |
- ----------- | | ------- | V
- +---------+ snd SYN,ACK / \ snd SYN +---------+
- | |<----------------- ------------------>| |
- | SYN | rcv SYN | SYN |
- | RCVD |<-----------------------------------------------| SENT |
- | | snd ACK | |
- | |------------------ -------------------| |
- +---------+ rcv ACK of SYN \ / rcv SYN,ACK +---------+
- | -------------- | | -----------
- | x | | snd ACK
- | V V
- | CLOSE +---------+
- | ------- | ESTAB |
- | snd FIN +---------+
- | CLOSE | | rcv FIN
- V ------- | | -------
- +---------+ snd FIN / \ snd ACK +---------+
- | FIN |<----------------- ------------------>| CLOSE |
- | WAIT-1 |------------------ | WAIT |
- +---------+ rcv FIN \ +---------+
- | rcv ACK of FIN ------- | CLOSE |
- | -------------- snd ACK | ------- |
- V x V snd FIN V
- +---------+ +---------+ +---------+
- |FINWAIT-2| | CLOSING | | LAST-ACK|
- +---------+ +---------+ +---------+
- | rcv ACK of FIN | rcv ACK of FIN |
- | rcv FIN -------------- | Timeout=2MSL -------------- |
- | ------- x V ------------ x V
- \ snd ACK +---------+delete TCB +---------+
- ------------------------>|TIME WAIT|------------------>| CLOSED |
- +---------+ +---------+
-
- TCP Connection State Diagram
- Figure 6.
-
-
- [Page 23]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
-3.3. Sequence Numbers
-
- A fundamental notion in the design is that every octet of data sent
- over a TCP connection has a sequence number. Since every octet is
- sequenced, each of them can be acknowledged. The acknowledgment
- mechanism employed is cumulative so that an acknowledgment of sequence
- number X indicates that all octets up to but not including X have been
- received. This mechanism allows for straight-forward duplicate
- detection in the presence of retransmission. Numbering of octets
- within a segment is that the first data octet immediately following
- the header is the lowest numbered, and the following octets are
- numbered consecutively.
-
- It is essential to remember that the actual sequence number space is
- finite, though very large. This space ranges from 0 to 2**32 - 1.
- Since the space is finite, all arithmetic dealing with sequence
- numbers must be performed modulo 2**32. This unsigned arithmetic
- preserves the relationship of sequence numbers as they cycle from
- 2**32 - 1 to 0 again. There are some subtleties to computer modulo
- arithmetic, so great care should be taken in programming the
- comparison of such values. The symbol "=<" means "less than or equal"
- (modulo 2**32).
-
- The typical kinds of sequence number comparisons which the TCP must
- perform include:
-
- (a) Determining that an acknowledgment refers to some sequence
- number sent but not yet acknowledged.
-
- (b) Determining that all sequence numbers occupied by a segment
- have been acknowledged (e.g., to remove the segment from a
- retransmission queue).
-
- (c) Determining that an incoming segment contains sequence numbers
- which are expected (i.e., that the segment "overlaps" the
- receive window).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 24]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- In response to sending data the TCP will receive acknowledgments. The
- following comparisons are needed to process the acknowledgments.
-
- SND.UNA = oldest unacknowledged sequence number
-
- SND.NXT = next sequence number to be sent
-
- SEG.ACK = acknowledgment from the receiving TCP (next sequence
- number expected by the receiving TCP)
-
- SEG.SEQ = first sequence number of a segment
-
- SEG.LEN = the number of octets occupied by the data in the segment
- (counting SYN and FIN)
-
- SEG.SEQ+SEG.LEN-1 = last sequence number of a segment
-
- A new acknowledgment (called an "acceptable ack"), is one for which
- the inequality below holds:
-
- SND.UNA < SEG.ACK =< SND.NXT
-
- A segment on the retransmission queue is fully acknowledged if the sum
- of its sequence number and length is less or equal than the
- acknowledgment value in the incoming segment.
-
- When data is received the following comparisons are needed:
-
- RCV.NXT = next sequence number expected on an incoming segments, and
- is the left or lower edge of the receive window
-
- RCV.NXT+RCV.WND-1 = last sequence number expected on an incoming
- segment, and is the right or upper edge of the receive window
-
- SEG.SEQ = first sequence number occupied by the incoming segment
-
- SEG.SEQ+SEG.LEN-1 = last sequence number occupied by the incoming
- segment
-
- A segment is judged to occupy a portion of valid receive sequence
- space if
-
- RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
-
- or
-
- RCV.NXT =< SEG.SEQ+SEG.LEN-1 < RCV.NXT+RCV.WND
-
-
-
- [Page 25]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- The first part of this test checks to see if the beginning of the
- segment falls in the window, the second part of the test checks to see
- if the end of the segment falls in the window; if the segment passes
- either part of the test it contains data in the window.
-
- Actually, it is a little more complicated than this. Due to zero
- windows and zero length segments, we have four cases for the
- acceptability of an incoming segment:
-
- Segment Receive Test
- Length Window
- ------- ------- -------------------------------------------
-
- 0 0 SEG.SEQ = RCV.NXT
-
- 0 >0 RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
-
- >0 0 not acceptable
-
- >0 >0 RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
- or RCV.NXT =< SEG.SEQ+SEG.LEN-1 < RCV.NXT+RCV.WND
-
- Note that when the receive window is zero no segments should be
- acceptable except ACK segments. Thus, it is be possible for a TCP to
- maintain a zero receive window while transmitting data and receiving
- ACKs. However, even when the receive window is zero, a TCP must
- process the RST and URG fields of all incoming segments.
-
- We have taken advantage of the numbering scheme to protect certain
- control information as well. This is achieved by implicitly including
- some control flags in the sequence space so they can be retransmitted
- and acknowledged without confusion (i.e., one and only one copy of the
- control will be acted upon). Control information is not physically
- carried in the segment data space. Consequently, we must adopt rules
- for implicitly assigning sequence numbers to control. The SYN and FIN
- are the only controls requiring this protection, and these controls
- are used only at connection opening and closing. For sequence number
- purposes, the SYN is considered to occur before the first actual data
- octet of the segment in which it occurs, while the FIN is considered
- to occur after the last actual data octet in a segment in which it
- occurs. The segment length (SEG.LEN) includes both data and sequence
- space occupying controls. When a SYN is present then SEG.SEQ is the
- sequence number of the SYN.
-
-
-
-
-
-
-
-[Page 26]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- Initial Sequence Number Selection
-
- The protocol places no restriction on a particular connection being
- used over and over again. A connection is defined by a pair of
- sockets. New instances of a connection will be referred to as
- incarnations of the connection. The problem that arises from this is
- -- "how does the TCP identify duplicate segments from previous
- incarnations of the connection?" This problem becomes apparent if the
- connection is being opened and closed in quick succession, or if the
- connection breaks with loss of memory and is then reestablished.
-
- To avoid confusion we must prevent segments from one incarnation of a
- connection from being used while the same sequence numbers may still
- be present in the network from an earlier incarnation. We want to
- assure this, even if a TCP crashes and loses all knowledge of the
- sequence numbers it has been using. When new connections are created,
- an initial sequence number (ISN) generator is employed which selects a
- new 32 bit ISN. The generator is bound to a (possibly fictitious) 32
- bit clock whose low order bit is incremented roughly every 4
- microseconds. Thus, the ISN cycles approximately every 4.55 hours.
- Since we assume that segments will stay in the network no more than
- the Maximum Segment Lifetime (MSL) and that the MSL is less than 4.55
- hours we can reasonably assume that ISN's will be unique.
-
- For each connection there is a send sequence number and a receive
- sequence number. The initial send sequence number (ISS) is chosen by
- the data sending TCP, and the initial receive sequence number (IRS) is
- learned during the connection establishing procedure.
-
- For a connection to be established or initialized, the two TCPs must
- synchronize on each other's initial sequence numbers. This is done in
- an exchange of connection establishing segments carrying a control bit
- called "SYN" (for synchronize) and the initial sequence numbers. As a
- shorthand, segments carrying the SYN bit are also called "SYNs".
- Hence, the solution requires a suitable mechanism for picking an
- initial sequence number and a slightly involved handshake to exchange
- the ISN's.
-
- The synchronization requires each side to send it's own initial
- sequence number and to receive a confirmation of it in acknowledgment
- from the other side. Each side must also receive the other side's
- initial sequence number and send a confirming acknowledgment.
-
- 1) A --> B SYN my sequence number is X
- 2) A <-- B ACK your sequence number is X
- 3) A <-- B SYN my sequence number is Y
- 4) A --> B ACK your sequence number is Y
-
-
-
- [Page 27]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- Because steps 2 and 3 can be combined in a single message this is
- called the three way (or three message) handshake.
-
- A three way handshake is necessary because sequence numbers are not
- tied to a global clock in the network, and TCPs may have different
- mechanisms for picking the ISN's. The receiver of the first SYN has
- no way of knowing whether the segment was an old delayed one or not,
- unless it remembers the last sequence number used on the connection
- (which is not always possible), and so it must ask the sender to
- verify this SYN. The three way handshake and the advantages of a
- clock-driven scheme are discussed in [3].
-
- Knowing When to Keep Quiet
-
- To be sure that a TCP does not create a segment that carries a
- sequence number which may be duplicated by an old segment remaining in
- the network, the TCP must keep quiet for a maximum segment lifetime
- (MSL) before assigning any sequence numbers upon starting up or
- recovering from a crash in which memory of sequence numbers in use was
- lost. For this specification the MSL is taken to be 2 minutes. This
- is an engineering choice, and may be changed if experience indicates
- it is desirable to do so. Note that if a TCP is reinitialized in some
- sense, yet retains its memory of sequence numbers in use, then it need
- not wait at all; it must only be sure to use sequence numbers larger
- than those recently used.
-
- The TCP Quiet Time Concept
-
- This specification provides that hosts which "crash" without
- retaining any knowledge of the last sequence numbers transmitted on
- each active (i.e., not closed) connection shall delay emitting any
- TCP segments for at least the agreed Maximum Segment Lifetime (MSL)
- in the internet system of which the host is a part. In the
- paragraphs below, an explanation for this specification is given.
- TCP implementors may violate the "quiet time" restriction, but only
- at the risk of causing some old data to be accepted as new or new
- data rejected as old duplicated by some receivers in the internet
- system.
-
- TCPs consume sequence number space each time a segment is formed and
- entered into the network output queue at a source host. The
- duplicate detection and sequencing algorithm in the TCP protocol
- relies on the unique binding of segment data to sequence space to
- the extent that sequence numbers will not cycle through all 2**32
- values before the segment data bound to those sequence numbers has
- been delivered and acknowledged by the receiver and all duplicate
- copies of the segments have "drained" from the internet. Without
- such an assumption, two distinct TCP segments could conceivably be
-
-
-[Page 28]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- assigned the same or overlapping sequence numbers, causing confusion
- at the receiver as to which data is new and which is old. Remember
- that each segment is bound to as many consecutive sequence numbers
- as there are octets of data in the segment.
-
- Under normal conditions, TCPs keep track of the next sequence number
- to emit and the oldest awaiting acknowledgment so as to avoid
- mistakenly using a sequence number over before its first use has
- been acknowledged. This alone does not guarantee that old duplicate
- data is drained from the net, so the sequence space has been made
- very large to reduce the probability that a wandering duplicate will
- cause trouble upon arrival. At 2 megabits/sec. it takes 4.5 hours
- to use up 2**32 octets of sequence space. Since the maximum segment
- lifetime in the net is not likely to exceed a few tens of seconds,
- this is deemed ample protection for foreseeable nets, even if data
- rates escalate to l0's of megabits/sec. At 100 megabits/sec, the
- cycle time is 5.4 minutes which may be a little short, but still
- within reason.
-
- The basic duplicate detection and sequencing algorithm in TCP can be
- defeated, however, if a source TCP does not have any memory of the
- sequence numbers it last used on a given connection. For example, if
- the TCP were to start all connections with sequence number 0, then
- upon crashing and restarting, a TCP might re-form an earlier
- connection (possibly after half-open connection resolution) and emit
- packets with sequence numbers identical to or overlapping with
- packets still in the network which were emitted on an earlier
- incarnation of the same connection. In the absence of knowledge
- about the sequence numbers used on a particular connection, the TCP
- specification recommends that the source delay for MSL seconds
- before emitting segments on the connection, to allow time for
- segments from the earlier connection incarnation to drain from the
- system.
-
- Even hosts which can remember the time of day and used it to select
- initial sequence number values are not immune from this problem
- (i.e., even if time of day is used to select an initial sequence
- number for each new connection incarnation).
-
- Suppose, for example, that a connection is opened starting with
- sequence number S. Suppose that this connection is not used much
- and that eventually the initial sequence number function (ISN(t))
- takes on a value equal to the sequence number, say S1, of the last
- segment sent by this TCP on a particular connection. Now suppose,
- at this instant, the host crashes, recovers, and establishes a new
- incarnation of the connection. The initial sequence number chosen is
- S1 = ISN(t) -- last used sequence number on old incarnation of
- connection! If the recovery occurs quickly enough, any old
-
-
- [Page 29]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- duplicates in the net bearing sequence numbers in the neighborhood
- of S1 may arrive and be treated as new packets by the receiver of
- the new incarnation of the connection.
-
- The problem is that the recovering host may not know for how long it
- crashed nor does it know whether there are still old duplicates in
- the system from earlier connection incarnations.
-
- One way to deal with this problem is to deliberately delay emitting
- segments for one MSL after recovery from a crash- this is the "quite
- time" specification. Hosts which prefer to avoid waiting are
- willing to risk possible confusion of old and new packets at a given
- destination may choose not to wait for the "quite time".
- Implementors may provide TCP users with the ability to select on a
- connection by connection basis whether to wait after a crash, or may
- informally implement the "quite time" for all connections.
- Obviously, even where a user selects to "wait," this is not
- necessary after the host has been "up" for at least MSL seconds.
-
- To summarize: every segment emitted occupies one or more sequence
- numbers in the sequence space, the numbers occupied by a segment are
- "busy" or "in use" until MSL seconds have passed, upon crashing a
- block of space-time is occupied by the octets of the last emitted
- segment, if a new connection is started too soon and uses any of the
- sequence numbers in the space-time footprint of the last segment of
- the previous connection incarnation, there is a potential sequence
- number overlap area which could cause confusion at the receiver.
-
-3.4. Establishing a connection
-
- The "three-way handshake" is the procedure used to establish a
- connection. This procedure normally is initiated by one TCP and
- responded to by another TCP. The procedure also works if two TCP
- simultaneously initiate the procedure. When simultaneous attempt
- occurs, each TCP receives a "SYN" segment which carries no
- acknowledgment after it has sent a "SYN". Of course, the arrival of
- an old duplicate "SYN" segment can potentially make it appear, to the
- recipient, that a simultaneous connection initiation is in progress.
- Proper use of "reset" segments can disambiguate these cases.
-
- Several examples of connection initiation follow. Although these
- examples do not show connection synchronization using data-carrying
- segments, this is perfectly legitimate, so long as the receiving TCP
- doesn't deliver the data to the user until it is clear the data is
- valid (i.e., the data must be buffered at the receiver until the
- connection reaches the ESTABLISHED state). The three-way handshake
- reduces the possibility of false connections. It is the
-
-
-
-[Page 30]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- implementation of a trade-off between memory and messages to provide
- information for this checking.
-
- The simplest three-way handshake is shown in figure 7 below. The
- figures should be interpreted in the following way. Each line is
- numbered for reference purposes. Right arrows (-->) indicate
- departure of a TCP segment from TCP A to TCP B, or arrival of a
- segment at B from A. Left arrows (<--), indicate the reverse.
- Ellipsis (...) indicates a segment which is still in the network
- (delayed). An "XXX" indicates a segment which is lost or rejected.
- Comments appear in parentheses. TCP states represent the state AFTER
- the departure or arrival of the segment (whose contents are shown in
- the center of each line). Segment contents are shown in abbreviated
- form, with sequence number, control flags, and ACK field. Other
- fields such as window, addresses, lengths, and text have been left out
- in the interest of clarity.
-
-
-
- TCP A TCP B
-
- 1. CLOSED LISTEN
-
- 2. SYN-SENT --> <SEQ=100><CTL=SYN> --> SYN-RECEIVED
-
- 3. ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK> <-- SYN-RECEIVED
-
- 4. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK> --> ESTABLISHED
-
- 5. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK><DATA> --> ESTABLISHED
-
- Basic 3-Way Handshake for Connection Synchronization
-
- Figure 7.
-
- In line 2 of figure 7, TCP A begins by sending a SYN segment
- indicating that it will use sequence numbers starting with sequence
- number 100. In line 3, TCP B sends a SYN and acknowledges the SYN it
- received from TCP A. Note that the acknowledgment field indicates TCP
- B is now expecting to hear sequence 101, acknowledging the SYN which
- occupied sequence 100.
-
- At line 4, TCP A responds with an empty segment containing an ACK for
- TCP B's SYN; and in line 5, TCP A sends some data. Note that the
- sequence number of the segment in line 5 is the same as in line 4
- because the ACK does not occupy sequence number space (if it did, we
- would wind up ACKing ACK's!).
-
-
-
- [Page 31]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- Simultaneous initiation is only slightly more complex, as is shown in
- figure 8. Each TCP cycles from CLOSED to SYN-SENT to SYN-RECEIVED to
- ESTABLISHED.
-
-
-
- TCP A TCP B
-
- 1. CLOSED CLOSED
-
- 2. SYN-SENT --> <SEQ=100><CTL=SYN> ...
-
- 3. SYN-RECEIVED <-- <SEQ=300><CTL=SYN> <-- SYN-SENT
-
- 4. ... <SEQ=100><CTL=SYN> --> SYN-RECEIVED
-
- 5. SYN-RECEIVED --> <SEQ=100><ACK=301><CTL=SYN,ACK> ...
-
- 6. ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK> <-- SYN-RECEIVED
-
- 7. ... <SEQ=101><ACK=301><CTL=ACK> --> ESTABLISHED
-
- Simultaneous Connection Synchronization
-
- Figure 8.
-
- The principle reason for the three-way handshake is to prevent old
- duplicate connection initiations from causing confusion. To deal with
- this, a special control message, reset, has been devised. If the
- receiving TCP is in a non-synchronized state (i.e., SYN-SENT,
- SYN-RECEIVED), it returns to LISTEN on receiving an acceptable reset.
- If the TCP is in one of the synchronized states (ESTABLISHED,
- FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT), it
- aborts the connection and informs its user. We discuss this latter
- case under "half-open" connections below.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 32]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
-
-
- TCP A TCP B
-
- 1. CLOSED LISTEN
-
- 2. SYN-SENT --> <SEQ=100><CTL=SYN> ...
-
- 3. (duplicate) ... <SEQ=90><CTL=SYN> --> SYN-RECEIVED
-
- 4. SYN-SENT <-- <SEQ=300><ACK=91><CTL=SYN,ACK> <-- SYN-RECEIVED
-
- 5. SYN-SENT --> <SEQ=91><CTL=RST> --> LISTEN
-
-
- 6. ... <SEQ=100><CTL=SYN> --> SYN-RECEIVED
-
- 7. SYN-SENT <-- <SEQ=400><ACK=101><CTL=SYN,ACK> <-- SYN-RECEIVED
-
- 8. ESTABLISHED --> <SEQ=101><ACK=401><CTL=ACK> --> ESTABLISHED
-
- Recovery from Old Duplicate SYN
-
- Figure 9.
-
- As a simple example of recovery from old duplicates, consider
- figure 9. At line 3, an old duplicate SYN arrives at TCP B. TCP B
- cannot tell that this is an old duplicate, so it responds normally
- (line 4). TCP A detects that the ACK field is incorrect and returns a
- RST (reset) with its SEQ field selected to make the segment
- believable. TCP B, on receiving the RST, returns to the LISTEN state.
- When the original SYN (pun intended) finally arrives at line 6, the
- synchronization proceeds normally. If the SYN at line 6 had arrived
- before the RST, a more complex exchange might have occurred with RST's
- sent in both directions.
-
- Half-Open Connections and Other Anomalies
-
- An established connection is said to be "half-open" if one of the
- TCPs has closed or aborted the connection at its end without the
- knowledge of the other, or if the two ends of the connection have
- become desynchronized owing to a crash that resulted in loss of
- memory. Such connections will automatically become reset if an
- attempt is made to send data in either direction. However, half-open
- connections are expected to be unusual, and the recovery procedure is
- mildly involved.
-
- If at site A the connection no longer exists, then an attempt by the
-
-
- [Page 33]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- user at site B to send any data on it will result in the site B TCP
- receiving a reset control message. Such a message indicates to the
- site B TCP that something is wrong, and it is expected to abort the
- connection.
-
- Assume that two user processes A and B are communicating with one
- another when a crash occurs causing loss of memory to A's TCP.
- Depending on the operating system supporting A's TCP, it is likely
- that some error recovery mechanism exists. When the TCP is up again,
- A is likely to start again from the beginning or from a recovery
- point. As a result, A will probably try to OPEN the connection again
- or try to SEND on the connection it believes open. In the latter
- case, it receives the error message "connection not open" from the
- local (A's) TCP. In an attempt to establish the connection, A's TCP
- will send a segment containing SYN. This scenario leads to the
- example shown in figure 10. After TCP A crashes, the user attempts to
- re-open the connection. TCP B, in the meantime, thinks the connection
- is open.
-
-
-
- TCP A TCP B
-
- 1. (CRASH) (send 300,receive 100)
-
- 2. CLOSED ESTABLISHED
-
- 3. SYN-SENT --> <SEQ=400><CTL=SYN> --> (??)
-
- 4. (!!) <-- <SEQ=300><ACK=100><CTL=ACK> <-- ESTABLISHED
-
- 5. SYN-SENT --> <SEQ=100><CTL=RST> --> (Abort!!)
-
- 6. SYN-SENT CLOSED
-
- 7. SYN-SENT --> <SEQ=400><CTL=SYN> -->
-
- Half-Open Connection Discovery
-
- Figure 10.
-
- When the SYN arrives at line 3, TCP B, being in a synchronized state,
- and the incoming segment outside the window, responds with an
- acknowledgment indicating what sequence it next expects to hear (ACK
- 100). TCP A sees that this segment does not acknowledge anything it
- sent and, being unsynchronized, sends a reset (RST) because it has
- detected a half-open connection. TCP B aborts at line 5. TCP A will
-
-
-
-[Page 34]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- continue to try to establish the connection; the problem is now
- reduced to the basic 3-way handshake of figure 7.
-
- An interesting alternative case occurs when TCP A crashes and TCP B
- tries to send data on what it thinks is a synchronized connection.
- This is illustrated in figure 11. In this case, the data arriving at
- TCP A from TCP B (line 2) is unacceptable because no such connection
- exists, so TCP A sends a RST. The RST is acceptable so TCP B
- processes it and aborts the connection.
-
-
-
- TCP A TCP B
-
- 1. (CRASH) (send 300,receive 100)
-
- 2. (??) <-- <SEQ=300><ACK=100><DATA=10><CTL=ACK> <-- ESTABLISHED
-
- 3. --> <SEQ=100><CTL=RST> --> (ABORT!!)
-
- Active Side Causes Half-Open Connection Discovery
-
- Figure 11.
-
- In figure 12, we find the two TCPs A and B with passive connections
- waiting for SYN. An old duplicate arriving at TCP B (line 2) stirs B
- into action. A SYN-ACK is returned (line 3) and causes TCP A to
- generate a RST (the ACK in line 3 is not acceptable). TCP B accepts
- the reset and returns to its passive LISTEN state.
-
-
-
- TCP A TCP B
-
- 1. LISTEN LISTEN
-
- 2. ... <SEQ=Z><CTL=SYN> --> SYN-RECEIVED
-
- 3. (??) <-- <SEQ=X><ACK=Z+1><CTL=SYN,ACK> <-- SYN-RECEIVED
-
- 4. --> <SEQ=Z+1><CTL=RST> --> (return to LISTEN!)
-
- 5. LISTEN LISTEN
-
- Old Duplicate SYN Initiates a Reset on two Passive Sockets
-
- Figure 12.
-
-
-
- [Page 35]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- A variety of other cases are possible, all of which are accounted for
- by the following rules for RST generation and processing.
-
- Reset Generation
-
- As a general rule, reset (RST) must be sent whenever a segment arrives
- which apparently is not intended for the current connection. A reset
- must not be sent if it is not clear that this is the case.
-
- There are three groups of states:
-
- 1. If the connection does not exist (CLOSED) then a reset is sent
- in response to any incoming segment except another reset. In
- particular, SYNs addressed to a non-existent connection are rejected
- by this means.
-
- If the incoming segment has an ACK field, the reset takes its
- sequence number from the ACK field of the segment, otherwise the
- reset has sequence number zero and the ACK field is set to the sum
- of the sequence number and segment length of the incoming segment.
- The connection remains in the CLOSED state.
-
- 2. If the connection is in any non-synchronized state (LISTEN,
- SYN-SENT, SYN-RECEIVED), and the incoming segment acknowledges
- something not yet sent (the segment carries an unacceptable ACK), or
- if an incoming segment has a security level or compartment which
- does not exactly match the level and compartment requested for the
- connection, a reset is sent.
-
- If our SYN has not been acknowledged and the precedence level of the
- incoming segment is higher than the precedence level requested then
- either raise the local precedence level (if allowed by the user and
- the system) or send a reset; or if the precedence level of the
- incoming segment is lower than the precedence level requested then
- continue as if the precedence matched exactly (if the remote TCP
- cannot raise the precedence level to match ours this will be
- detected in the next segment it sends, and the connection will be
- terminated then). If our SYN has been acknowledged (perhaps in this
- incoming segment) the precedence level of the incoming segment must
- match the local precedence level exactly, if it does not a reset
- must be sent.
-
- If the incoming segment has an ACK field, the reset takes its
- sequence number from the ACK field of the segment, otherwise the
- reset has sequence number zero and the ACK field is set to the sum
- of the sequence number and segment length of the incoming segment.
- The connection remains in the same state.
-
-
-
-[Page 36]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- 3. If the connection is in a synchronized state (ESTABLISHED,
- FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT),
- any unacceptable segment (out of window sequence number or
- unacceptible acknowledgment number) must elicit only an empty
- acknowledgment segment containing the current send-sequence number
- and an acknowledgment indicating the next sequence number expected
- to be received, and the connection remains in the same state.
-
- If an incoming segment has a security level, or compartment, or
- precedence which does not exactly match the level, and compartment,
- and precedence requested for the connection,a reset is sent and
- connection goes to the CLOSED state. The reset takes its sequence
- number from the ACK field of the incoming segment.
-
- Reset Processing
-
- In all states except SYN-SENT, all reset (RST) segments are validated
- by checking their SEQ-fields. A reset is valid if its sequence number
- is in the window. In the SYN-SENT state (a RST received in response
- to an initial SYN), the RST is acceptable if the ACK field
- acknowledges the SYN.
-
- The receiver of a RST first validates it, then changes state. If the
- receiver was in the LISTEN state, it ignores it. If the receiver was
- in SYN-RECEIVED state and had previously been in the LISTEN state,
- then the receiver returns to the LISTEN state, otherwise the receiver
- aborts the connection and goes to the CLOSED state. If the receiver
- was in any other state, it aborts the connection and advises the user
- and goes to the CLOSED state.
-
-3.5. Closing a Connection
-
- CLOSE is an operation meaning "I have no more data to send." The
- notion of closing a full-duplex connection is subject to ambiguous
- interpretation, of course, since it may not be obvious how to treat
- the receiving side of the connection. We have chosen to treat CLOSE
- in a simplex fashion. The user who CLOSEs may continue to RECEIVE
- until he is told that the other side has CLOSED also. Thus, a program
- could initiate several SENDs followed by a CLOSE, and then continue to
- RECEIVE until signaled that a RECEIVE failed because the other side
- has CLOSED. We assume that the TCP will signal a user, even if no
- RECEIVEs are outstanding, that the other side has closed, so the user
- can terminate his side gracefully. A TCP will reliably deliver all
- buffers SENT before the connection was CLOSED so a user who expects no
- data in return need only wait to hear the connection was CLOSED
- successfully to know that all his data was received at the destination
- TCP. Users must keep reading connections they close for sending until
- the TCP says no more data.
-
-
- [Page 37]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- There are essentially three cases:
-
- 1) The user initiates by telling the TCP to CLOSE the connection
-
- 2) The remote TCP initiates by sending a FIN control signal
-
- 3) Both users CLOSE simultaneously
-
- Case 1: Local user initiates the close
-
- In this case, a FIN segment can be constructed and placed on the
- outgoing segment queue. No further SENDs from the user will be
- accepted by the TCP, and it enters the FIN-WAIT-1 state. RECEIVEs
- are allowed in this state. All segments preceding and including FIN
- will be retransmitted until acknowledged. When the other TCP has
- both acknowledged the FIN and sent a FIN of its own, the first TCP
- can ACK this FIN. Note that a TCP receiving a FIN will ACK but not
- send its own FIN until its user has CLOSED the connection also.
-
- Case 2: TCP receives a FIN from the network
-
- If an unsolicited FIN arrives from the network, the receiving TCP
- can ACK it and tell the user that the connection is closing. The
- user will respond with a CLOSE, upon which the TCP can send a FIN to
- the other TCP after sending any remaining data. The TCP then waits
- until its own FIN is acknowledged whereupon it deletes the
- connection. If an ACK is not forthcoming, after the user timeout
- the connection is aborted and the user is told.
-
- Case 3: both users close simultaneously
-
- A simultaneous CLOSE by users at both ends of a connection causes
- FIN segments to be exchanged. When all segments preceding the FINs
- have been processed and acknowledged, each TCP can ACK the FIN it
- has received. Both will, upon receiving these ACKs, delete the
- connection.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 38]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
-
-
- TCP A TCP B
-
- 1. ESTABLISHED ESTABLISHED
-
- 2. (Close)
- FIN-WAIT-1 --> <SEQ=100><ACK=300><CTL=FIN,ACK> --> CLOSE-WAIT
-
- 3. FIN-WAIT-2 <-- <SEQ=300><ACK=101><CTL=ACK> <-- CLOSE-WAIT
-
- 4. (Close)
- TIME-WAIT <-- <SEQ=300><ACK=101><CTL=FIN,ACK> <-- LAST-ACK
-
- 5. TIME-WAIT --> <SEQ=101><ACK=301><CTL=ACK> --> CLOSED
-
- 6. (2 MSL)
- CLOSED
-
- Normal Close Sequence
-
- Figure 13.
-
-
-
- TCP A TCP B
-
- 1. ESTABLISHED ESTABLISHED
-
- 2. (Close) (Close)
- FIN-WAIT-1 --> <SEQ=100><ACK=300><CTL=FIN,ACK> ... FIN-WAIT-1
- <-- <SEQ=300><ACK=100><CTL=FIN,ACK> <--
- ... <SEQ=100><ACK=300><CTL=FIN,ACK> -->
-
- 3. CLOSING --> <SEQ=101><ACK=301><CTL=ACK> ... CLOSING
- <-- <SEQ=301><ACK=101><CTL=ACK> <--
- ... <SEQ=101><ACK=301><CTL=ACK> -->
-
- 4. TIME-WAIT TIME-WAIT
- (2 MSL) (2 MSL)
- CLOSED CLOSED
-
- Simultaneous Close Sequence
-
- Figure 14.
-
-
-
-
-
- [Page 39]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
-3.6. Precedence and Security
-
- The intent is that connection be allowed only between ports operating
- with exactly the same security and compartment values and at the
- higher of the precedence level requested by the two ports.
-
- The precedence and security parameters used in TCP are exactly those
- defined in the Internet Protocol (IP) [2]. Throughout this TCP
- specification the term "security/compartment" is intended to indicate
- the security parameters used in IP including security, compartment,
- user group, and handling restriction.
-
- A connection attempt with mismatched security/compartment values or a
- lower precedence value must be rejected by sending a reset. Rejecting
- a connection due to too low a precedence only occurs after an
- acknowledgment of the SYN has been received.
-
- Note that TCP modules which operate only at the default value of
- precedence will still have to check the precedence of incoming
- segments and possibly raise the precedence level they use on the
- connection.
-
- The security paramaters may be used even in a non-secure environment
- (the values would indicate unclassified data), thus hosts in
- non-secure environments must be prepared to receive the security
- parameters, though they need not send them.
-
-3.7. Data Communication
-
- Once the connection is established data is communicated by the
- exchange of segments. Because segments may be lost due to errors
- (checksum test failure), or network congestion, TCP uses
- retransmission (after a timeout) to ensure delivery of every segment.
- Duplicate segments may arrive due to network or TCP retransmission.
- As discussed in the section on sequence numbers the TCP performs
- certain tests on the sequence and acknowledgment numbers in the
- segments to verify their acceptability.
-
- The sender of data keeps track of the next sequence number to use in
- the variable SND.NXT. The receiver of data keeps track of the next
- sequence number to expect in the variable RCV.NXT. The sender of data
- keeps track of the oldest unacknowledged sequence number in the
- variable SND.UNA. If the data flow is momentarily idle and all data
- sent has been acknowledged then the three variables will be equal.
-
- When the sender creates a segment and transmits it the sender advances
- SND.NXT. When the receiver accepts a segment it advances RCV.NXT and
- sends an acknowledgment. When the data sender receives an
-
-
-[Page 40]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- acknowledgment it advances SND.UNA. The extent to which the values of
- these variables differ is a measure of the delay in the communication.
- The amount by which the variables are advanced is the length of the
- data in the segment. Note that once in the ESTABLISHED state all
- segments must carry current acknowledgment information.
-
- The CLOSE user call implies a push function, as does the FIN control
- flag in an incoming segment.
-
- Retransmission Timeout
-
- Because of the variability of the networks that compose an
- internetwork system and the wide range of uses of TCP connections the
- retransmission timeout must be dynamically determined. One procedure
- for determining a retransmission time out is given here as an
- illustration.
-
- An Example Retransmission Timeout Procedure
-
- Measure the elapsed time between sending a data octet with a
- particular sequence number and receiving an acknowledgment that
- covers that sequence number (segments sent do not have to match
- segments received). This measured elapsed time is the Round Trip
- Time (RTT). Next compute a Smoothed Round Trip Time (SRTT) as:
-
- SRTT = ( ALPHA * SRTT ) + ((1-ALPHA) * RTT)
-
- and based on this, compute the retransmission timeout (RTO) as:
-
- RTO = min[UBOUND,max[LBOUND,(BETA*SRTT)]]
-
- where UBOUND is an upper bound on the timeout (e.g., 1 minute),
- LBOUND is a lower bound on the timeout (e.g., 1 second), ALPHA is
- a smoothing factor (e.g., .8 to .9), and BETA is a delay variance
- factor (e.g., 1.3 to 2.0).
-
- The Communication of Urgent Information
-
- The objective of the TCP urgent mechanism is to allow the sending user
- to stimulate the receiving user to accept some urgent data and to
- permit the receiving TCP to indicate to the receiving user when all
- the currently known urgent data has been received by the user.
-
- This mechanism permits a point in the data stream to be designated as
- the end of urgent information. Whenever this point is in advance of
- the receive sequence number (RCV.NXT) at the receiving TCP, that TCP
- must tell the user to go into "urgent mode"; when the receive sequence
- number catches up to the urgent pointer, the TCP must tell user to go
-
-
- [Page 41]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- into "normal mode". If the urgent pointer is updated while the user
- is in "urgent mode", the update will be invisible to the user.
-
- The method employs a urgent field which is carried in all segments
- transmitted. The URG control flag indicates that the urgent field is
- meaningful and must be added to the segment sequence number to yield
- the urgent pointer. The absence of this flag indicates that there is
- no urgent data outstanding.
-
- To send an urgent indication the user must also send at least one data
- octet. If the sending user also indicates a push, timely delivery of
- the urgent information to the destination process is enhanced.
-
- Managing the Window
-
- The window sent in each segment indicates the range of sequence
- numbers the sender of the window (the data receiver) is currently
- prepared to accept. There is an assumption that this is related to
- the currently available data buffer space available for this
- connection.
-
- Indicating a large window encourages transmissions. If more data
- arrives than can be accepted, it will be discarded. This will result
- in excessive retransmissions, adding unnecessarily to the load on the
- network and the TCPs. Indicating a small window may restrict the
- transmission of data to the point of introducing a round trip delay
- between each new segment transmitted.
-
- The mechanisms provided allow a TCP to advertise a large window and to
- subsequently advertise a much smaller window without having accepted
- that much data. This, so called "shrinking the window," is strongly
- discouraged. The robustness principle dictates that TCPs will not
- shrink the window themselves, but will be prepared for such behavior
- on the part of other TCPs.
-
- The sending TCP must be prepared to accept from the user and send at
- least one octet of new data even if the send window is zero. The
- sending TCP must regularly retransmit to the receiving TCP even when
- the window is zero. Two minutes is recommended for the retransmission
- interval when the window is zero. This retransmission is essential to
- guarantee that when either TCP has a zero window the re-opening of the
- window will be reliably reported to the other.
-
- When the receiving TCP has a zero window and a segment arrives it must
- still send an acknowledgment showing its next expected sequence number
- and current window (zero).
-
- The sending TCP packages the data to be transmitted into segments
-
-
-[Page 42]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- which fit the current window, and may repackage segments on the
- retransmission queue. Such repackaging is not required, but may be
- helpful.
-
- In a connection with a one-way data flow, the window information will
- be carried in acknowledgment segments that all have the same sequence
- number so there will be no way to reorder them if they arrive out of
- order. This is not a serious problem, but it will allow the window
- information to be on occasion temporarily based on old reports from
- the data receiver. A refinement to avoid this problem is to act on
- the window information from segments that carry the highest
- acknowledgment number (that is segments with acknowledgment number
- equal or greater than the highest previously received).
-
- The window management procedure has significant influence on the
- communication performance. The following comments are suggestions to
- implementers.
-
- Window Management Suggestions
-
- Allocating a very small window causes data to be transmitted in
- many small segments when better performance is achieved using
- fewer large segments.
-
- One suggestion for avoiding small windows is for the receiver to
- defer updating a window until the additional allocation is at
- least X percent of the maximum allocation possible for the
- connection (where X might be 20 to 40).
-
- Another suggestion is for the sender to avoid sending small
- segments by waiting until the window is large enough before
- sending data. If the the user signals a push function then the
- data must be sent even if it is a small segment.
-
- Note that the acknowledgments should not be delayed or unnecessary
- retransmissions will result. One strategy would be to send an
- acknowledgment when a small segment arrives (with out updating the
- window information), and then to send another acknowledgment with
- new window information when the window is larger.
-
- The segment sent to probe a zero window may also begin a break up
- of transmitted data into smaller and smaller segments. If a
- segment containing a single data octet sent to probe a zero window
- is accepted, it consumes one octet of the window now available.
- If the sending TCP simply sends as much as it can whenever the
- window is non zero, the transmitted data will be broken into
- alternating big and small segments. As time goes on, occasional
- pauses in the receiver making window allocation available will
-
-
- [Page 43]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- result in breaking the big segments into a small and not quite so
- big pair. And after a while the data transmission will be in
- mostly small segments.
-
- The suggestion here is that the TCP implementations need to
- actively attempt to combine small window allocations into larger
- windows, since the mechanisms for managing the window tend to lead
- to many small windows in the simplest minded implementations.
-
-3.8. Interfaces
-
- There are of course two interfaces of concern: the user/TCP interface
- and the TCP/lower-level interface. We have a fairly elaborate model
- of the user/TCP interface, but the interface to the lower level
- protocol module is left unspecified here, since it will be specified
- in detail by the specification of the lowel level protocol. For the
- case that the lower level is IP we note some of the parameter values
- that TCPs might use.
-
- User/TCP Interface
-
- The following functional description of user commands to the TCP is,
- at best, fictional, since every operating system will have different
- facilities. Consequently, we must warn readers that different TCP
- implementations may have different user interfaces. However, all
- TCPs must provide a certain minimum set of services to guarantee
- that all TCP implementations can support the same protocol
- hierarchy. This section specifies the functional interfaces
- required of all TCP implementations.
-
- TCP User Commands
-
- The following sections functionally characterize a USER/TCP
- interface. The notation used is similar to most procedure or
- function calls in high level languages, but this usage is not
- meant to rule out trap type service calls (e.g., SVCs, UUOs,
- EMTs).
-
- The user commands described below specify the basic functions the
- TCP must perform to support interprocess communication.
- Individual implementations must define their own exact format, and
- may provide combinations or subsets of the basic functions in
- single calls. In particular, some implementations may wish to
- automatically OPEN a connection on the first SEND or RECEIVE
- issued by the user for a given connection.
-
-
-
-
-
-[Page 44]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- In providing interprocess communication facilities, the TCP must
- not only accept commands, but must also return information to the
- processes it serves. The latter consists of:
-
- (a) general information about a connection (e.g., interrupts,
- remote close, binding of unspecified foreign socket).
-
- (b) replies to specific user commands indicating success or
- various types of failure.
-
- Open
-
- Format: OPEN (local port, foreign socket, active/passive
- [, timeout] [, precedence] [, security/compartment] [, options])
- -> local connection name
-
- We assume that the local TCP is aware of the identity of the
- processes it serves and will check the authority of the process
- to use the connection specified. Depending upon the
- implementation of the TCP, the local network and TCP identifiers
- for the source address will either be supplied by the TCP or the
- lower level protocol (e.g., IP). These considerations are the
- result of concern about security, to the extent that no TCP be
- able to masquerade as another one, and so on. Similarly, no
- process can masquerade as another without the collusion of the
- TCP.
-
- If the active/passive flag is set to passive, then this is a
- call to LISTEN for an incoming connection. A passive open may
- have either a fully specified foreign socket to wait for a
- particular connection or an unspecified foreign socket to wait
- for any call. A fully specified passive call can be made active
- by the subsequent execution of a SEND.
-
- A transmission control block (TCB) is created and partially
- filled in with data from the OPEN command parameters.
-
- On an active OPEN command, the TCP will begin the procedure to
- synchronize (i.e., establish) the connection at once.
-
- The timeout, if present, permits the caller to set up a timeout
- for all data submitted to TCP. If data is not successfully
- delivered to the destination within the timeout period, the TCP
- will abort the connection. The present global default is five
- minutes.
-
- The TCP or some component of the operating system will verify
- the users authority to open a connection with the specified
-
-
- [Page 45]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- precedence or security/compartment. The absence of precedence
- or security/compartment specification in the OPEN call indicates
- the default values must be used.
-
- TCP will accept incoming requests as matching only if the
- security/compartment information is exactly the same and only if
- the precedence is equal to or higher than the precedence
- requested in the OPEN call.
-
- The precedence for the connection is the higher of the values
- requested in the OPEN call and received from the incoming
- request, and fixed at that value for the life of the
- connection.Implementers may want to give the user control of
- this precedence negotiation. For example, the user might be
- allowed to specify that the precedence must be exactly matched,
- or that any attempt to raise the precedence be confirmed by the
- user.
-
- A local connection name will be returned to the user by the TCP.
- The local connection name can then be used as a short hand term
- for the connection defined by the <local socket, foreign socket>
- pair.
-
- Send
-
- Format: SEND (local connection name, buffer address, byte
- count, PUSH flag, URGENT flag [,timeout])
-
- This call causes the data contained in the indicated user buffer
- to be sent on the indicated connection. If the connection has
- not been opened, the SEND is considered an error. Some
- implementations may allow users to SEND first; in which case, an
- automatic OPEN would be done. If the calling process is not
- authorized to use this connection, an error is returned.
-
- If the PUSH flag is set, the data must be transmitted promptly
- to the receiver, and the PUSH bit will be set in the last TCP
- segment created from the buffer. If the PUSH flag is not set,
- the data may be combined with data from subsequent SENDs for
- transmission efficiency.
-
- If the URGENT flag is set, segments sent to the destination TCP
- will have the urgent pointer set. The receiving TCP will signal
- the urgent condition to the receiving process if the urgent
- pointer indicates that data preceding the urgent pointer has not
- been consumed by the receiving process. The purpose of urgent
- is to stimulate the receiver to process the urgent data and to
- indicate to the receiver when all the currently known urgent
-
-
-[Page 46]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- data has been received. The number of times the sending user's
- TCP signals urgent will not necessarily be equal to the number
- of times the receiving user will be notified of the presence of
- urgent data.
-
- If no foreign socket was specified in the OPEN, but the
- connection is established (e.g., because a LISTENing connection
- has become specific due to a foreign segment arriving for the
- local socket), then the designated buffer is sent to the implied
- foreign socket. Users who make use of OPEN with an unspecified
- foreign socket can make use of SEND without ever explicitly
- knowing the foreign socket address.
-
- However, if a SEND is attempted before the foreign socket
- becomes specified, an error will be returned. Users can use the
- STATUS call to determine the status of the connection. In some
- implementations the TCP may notify the user when an unspecified
- socket is bound.
-
- If a timeout is specified, the current user timeout for this
- connection is changed to the new one.
-
- In the simplest implementation, SEND would not return control to
- the sending process until either the transmission was complete
- or the timeout had been exceeded. However, this simple method
- is both subject to deadlocks (for example, both sides of the
- connection might try to do SENDs before doing any RECEIVEs) and
- offers poor performance, so it is not recommended. A more
- sophisticated implementation would return immediately to allow
- the process to run concurrently with network I/O, and,
- furthermore, to allow multiple SENDs to be in progress.
- Multiple SENDs are served in first come, first served order, so
- the TCP will queue those it cannot service immediately.
-
- We have implicitly assumed an asynchronous user interface in
- which a SEND later elicits some kind of SIGNAL or
- pseudo-interrupt from the serving TCP. An alternative is to
- return a response immediately. For instance, SENDs might return
- immediate local acknowledgment, even if the segment sent had not
- been acknowledged by the distant TCP. We could optimistically
- assume eventual success. If we are wrong, the connection will
- close anyway due to the timeout. In implementations of this
- kind (synchronous), there will still be some asynchronous
- signals, but these will deal with the connection itself, and not
- with specific segments or buffers.
-
- In order for the process to distinguish among error or success
- indications for different SENDs, it might be appropriate for the
-
-
- [Page 47]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- buffer address to be returned along with the coded response to
- the SEND request. TCP-to-user signals are discussed below,
- indicating the information which should be returned to the
- calling process.
-
- Receive
-
- Format: RECEIVE (local connection name, buffer address, byte
- count) -> byte count, urgent flag, push flag
-
- This command allocates a receiving buffer associated with the
- specified connection. If no OPEN precedes this command or the
- calling process is not authorized to use this connection, an
- error is returned.
-
- In the simplest implementation, control would not return to the
- calling program until either the buffer was filled, or some
- error occurred, but this scheme is highly subject to deadlocks.
- A more sophisticated implementation would permit several
- RECEIVEs to be outstanding at once. These would be filled as
- segments arrive. This strategy permits increased throughput at
- the cost of a more elaborate scheme (possibly asynchronous) to
- notify the calling program that a PUSH has been seen or a buffer
- filled.
-
- If enough data arrive to fill the buffer before a PUSH is seen,
- the PUSH flag will not be set in the response to the RECEIVE.
- The buffer will be filled with as much data as it can hold. If
- a PUSH is seen before the buffer is filled the buffer will be
- returned partially filled and PUSH indicated.
-
- If there is urgent data the user will have been informed as soon
- as it arrived via a TCP-to-user signal. The receiving user
- should thus be in "urgent mode". If the URGENT flag is on,
- additional urgent data remains. If the URGENT flag is off, this
- call to RECEIVE has returned all the urgent data, and the user
- may now leave "urgent mode". Note that data following the
- urgent pointer (non-urgent data) cannot be delivered to the user
- in the same buffer with preceeding urgent data unless the
- boundary is clearly marked for the user.
-
- To distinguish among several outstanding RECEIVEs and to take
- care of the case that a buffer is not completely filled, the
- return code is accompanied by both a buffer pointer and a byte
- count indicating the actual length of the data received.
-
- Alternative implementations of RECEIVE might have the TCP
-
-
-
-[Page 48]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- allocate buffer storage, or the TCP might share a ring buffer
- with the user.
-
- Close
-
- Format: CLOSE (local connection name)
-
- This command causes the connection specified to be closed. If
- the connection is not open or the calling process is not
- authorized to use this connection, an error is returned.
- Closing connections is intended to be a graceful operation in
- the sense that outstanding SENDs will be transmitted (and
- retransmitted), as flow control permits, until all have been
- serviced. Thus, it should be acceptable to make several SEND
- calls, followed by a CLOSE, and expect all the data to be sent
- to the destination. It should also be clear that users should
- continue to RECEIVE on CLOSING connections, since the other side
- may be trying to transmit the last of its data. Thus, CLOSE
- means "I have no more to send" but does not mean "I will not
- receive any more." It may happen (if the user level protocol is
- not well thought out) that the closing side is unable to get rid
- of all its data before timing out. In this event, CLOSE turns
- into ABORT, and the closing TCP gives up.
-
- The user may CLOSE the connection at any time on his own
- initiative, or in response to various prompts from the TCP
- (e.g., remote close executed, transmission timeout exceeded,
- destination inaccessible).
-
- Because closing a connection requires communication with the
- foreign TCP, connections may remain in the closing state for a
- short time. Attempts to reopen the connection before the TCP
- replies to the CLOSE command will result in error responses.
-
- Close also implies push function.
-
- Status
-
- Format: STATUS (local connection name) -> status data
-
- This is an implementation dependent user command and could be
- excluded without adverse effect. Information returned would
- typically come from the TCB associated with the connection.
-
- This command returns a data block containing the following
- information:
-
- local socket,
-
-
- [Page 49]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
- foreign socket,
- local connection name,
- receive window,
- send window,
- connection state,
- number of buffers awaiting acknowledgment,
- number of buffers pending receipt,
- urgent state,
- precedence,
- security/compartment,
- and transmission timeout.
-
- Depending on the state of the connection, or on the
- implementation itself, some of this information may not be
- available or meaningful. If the calling process is not
- authorized to use this connection, an error is returned. This
- prevents unauthorized processes from gaining information about a
- connection.
-
- Abort
-
- Format: ABORT (local connection name)
-
- This command causes all pending SENDs and RECEIVES to be
- aborted, the TCB to be removed, and a special RESET message to
- be sent to the TCP on the other side of the connection.
- Depending on the implementation, users may receive abort
- indications for each outstanding SEND or RECEIVE, or may simply
- receive an ABORT-acknowledgment.
-
- TCP-to-User Messages
-
- It is assumed that the operating system environment provides a
- means for the TCP to asynchronously signal the user program. When
- the TCP does signal a user program, certain information is passed
- to the user. Often in the specification the information will be
- an error message. In other cases there will be information
- relating to the completion of processing a SEND or RECEIVE or
- other user call.
-
- The following information is provided:
-
- Local Connection Name Always
- Response String Always
- Buffer Address Send & Receive
- Byte count (counts bytes received) Receive
- Push flag Receive
- Urgent flag Receive
-
-
-[Page 50]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- TCP/Lower-Level Interface
-
- The TCP calls on a lower level protocol module to actually send and
- receive information over a network. One case is that of the ARPA
- internetwork system where the lower level module is the Internet
- Protocol (IP) [2].
-
- If the lower level protocol is IP it provides arguments for a type
- of service and for a time to live. TCP uses the following settings
- for these parameters:
-
- Type of Service = Precedence: routine, Delay: normal, Throughput:
- normal, Reliability: normal; or 00000000.
-
- Time to Live = one minute, or 00111100.
-
- Note that the assumed maximum segment lifetime is two minutes.
- Here we explicitly ask that a segment be destroyed if it cannot
- be delivered by the internet system within one minute.
-
- If the lower level is IP (or other protocol that provides this
- feature) and source routing is used, the interface must allow the
- route information to be communicated. This is especially important
- so that the source and destination addresses used in the TCP
- checksum be the originating source and ultimate destination. It is
- also important to preserve the return route to answer connection
- requests.
-
- Any lower level protocol will have to provide the source address,
- destination address, and protocol fields, and some way to determine
- the "TCP length", both to provide the functional equivlent service
- of IP and to be used in the TCP checksum.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 51]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
-
-
-
-3.9. Event Processing
-
- The processing depicted in this section is an example of one possible
- implementation. Other implementations may have slightly different
- processing sequences, but they should differ from those in this
- section only in detail, not in substance.
-
- The activity of the TCP can be characterized as responding to events.
- The events that occur can be cast into three categories: user calls,
- arriving segments, and timeouts. This section describes the
- processing the TCP does in response to each of the events. In many
- cases the processing required depends on the state of the connection.
-
- Events that occur:
-
- User Calls
-
- OPEN
- SEND
- RECEIVE
- CLOSE
- ABORT
- STATUS
-
- Arriving Segments
-
- SEGMENT ARRIVES
-
- Timeouts
-
- USER TIMEOUT
- RETRANSMISSION TIMEOUT
- TIME-WAIT TIMEOUT
-
- The model of the TCP/user interface is that user commands receive an
- immediate return and possibly a delayed response via an event or
- pseudo interrupt. In the following descriptions, the term "signal"
- means cause a delayed response.
-
- Error responses are given as character strings. For example, user
- commands referencing connections that do not exist receive "error:
- connection not open".
-
- Please note in the following that all arithmetic on sequence numbers,
- acknowledgment numbers, windows, et cetera, is modulo 2**32 the size
- of the sequence number space. Also note that "=<" means less than or
- equal to (modulo 2**32).
-
-
-
-[Page 52]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-
-
-
- A natural way to think about processing incoming segments is to
- imagine that they are first tested for proper sequence number (i.e.,
- that their contents lie in the range of the expected "receive window"
- in the sequence number space) and then that they are generally queued
- and processed in sequence number order.
-
- When a segment overlaps other already received segments we reconstruct
- the segment to contain just the new data, and adjust the header fields
- to be consistent.
-
- Note that if no state change is mentioned the TCP stays in the same
- state.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 53]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- OPEN Call
-
-
-
- OPEN Call
-
- CLOSED STATE (i.e., TCB does not exist)
-
- Create a new transmission control block (TCB) to hold connection
- state information. Fill in local socket identifier, foreign
- socket, precedence, security/compartment, and user timeout
- information. Note that some parts of the foreign socket may be
- unspecified in a passive OPEN and are to be filled in by the
- parameters of the incoming SYN segment. Verify the security and
- precedence requested are allowed for this user, if not return
- "error: precedence not allowed" or "error: security/compartment
- not allowed." If passive enter the LISTEN state and return. If
- active and the foreign socket is unspecified, return "error:
- foreign socket unspecified"; if active and the foreign socket is
- specified, issue a SYN segment. An initial send sequence number
- (ISS) is selected. A SYN segment of the form <SEQ=ISS><CTL=SYN>
- is sent. Set SND.UNA to ISS, SND.NXT to ISS+1, enter SYN-SENT
- state, and return.
-
- If the caller does not have access to the local socket specified,
- return "error: connection illegal for this process". If there is
- no room to create a new connection, return "error: insufficient
- resources".
-
- LISTEN STATE
-
- If active and the foreign socket is specified, then change the
- connection from passive to active, select an ISS. Send a SYN
- segment, set SND.UNA to ISS, SND.NXT to ISS+1. Enter SYN-SENT
- state. Data associated with SEND may be sent with SYN segment or
- queued for transmission after entering ESTABLISHED state. The
- urgent bit if requested in the command must be sent with the data
- segments sent as a result of this command. If there is no room to
- queue the request, respond with "error: insufficient resources".
- If Foreign socket was not specified, then return "error: foreign
- socket unspecified".
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 54]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-OPEN Call
-
-
-
- SYN-SENT STATE
- SYN-RECEIVED STATE
- ESTABLISHED STATE
- FIN-WAIT-1 STATE
- FIN-WAIT-2 STATE
- CLOSE-WAIT STATE
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT STATE
-
- Return "error: connection already exists".
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 55]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- SEND Call
-
-
-
- SEND Call
-
- CLOSED STATE (i.e., TCB does not exist)
-
- If the user does not have access to such a connection, then return
- "error: connection illegal for this process".
-
- Otherwise, return "error: connection does not exist".
-
- LISTEN STATE
-
- If the foreign socket is specified, then change the connection
- from passive to active, select an ISS. Send a SYN segment, set
- SND.UNA to ISS, SND.NXT to ISS+1. Enter SYN-SENT state. Data
- associated with SEND may be sent with SYN segment or queued for
- transmission after entering ESTABLISHED state. The urgent bit if
- requested in the command must be sent with the data segments sent
- as a result of this command. If there is no room to queue the
- request, respond with "error: insufficient resources". If
- Foreign socket was not specified, then return "error: foreign
- socket unspecified".
-
- SYN-SENT STATE
- SYN-RECEIVED STATE
-
- Queue the data for transmission after entering ESTABLISHED state.
- If no space to queue, respond with "error: insufficient
- resources".
-
- ESTABLISHED STATE
- CLOSE-WAIT STATE
-
- Segmentize the buffer and send it with a piggybacked
- acknowledgment (acknowledgment value = RCV.NXT). If there is
- insufficient space to remember this buffer, simply return "error:
- insufficient resources".
-
- If the urgent flag is set, then SND.UP <- SND.NXT-1 and set the
- urgent pointer in the outgoing segments.
-
-
-
-
-
-
-
-
-
-
-[Page 56]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-SEND Call
-
-
-
- FIN-WAIT-1 STATE
- FIN-WAIT-2 STATE
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT STATE
-
- Return "error: connection closing" and do not service request.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 57]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- RECEIVE Call
-
-
-
- RECEIVE Call
-
- CLOSED STATE (i.e., TCB does not exist)
-
- If the user does not have access to such a connection, return
- "error: connection illegal for this process".
-
- Otherwise return "error: connection does not exist".
-
- LISTEN STATE
- SYN-SENT STATE
- SYN-RECEIVED STATE
-
- Queue for processing after entering ESTABLISHED state. If there
- is no room to queue this request, respond with "error:
- insufficient resources".
-
- ESTABLISHED STATE
- FIN-WAIT-1 STATE
- FIN-WAIT-2 STATE
-
- If insufficient incoming segments are queued to satisfy the
- request, queue the request. If there is no queue space to
- remember the RECEIVE, respond with "error: insufficient
- resources".
-
- Reassemble queued incoming segments into receive buffer and return
- to user. Mark "push seen" (PUSH) if this is the case.
-
- If RCV.UP is in advance of the data currently being passed to the
- user notify the user of the presence of urgent data.
-
- When the TCP takes responsibility for delivering data to the user
- that fact must be communicated to the sender via an
- acknowledgment. The formation of such an acknowledgment is
- described below in the discussion of processing an incoming
- segment.
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 58]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-RECEIVE Call
-
-
-
- CLOSE-WAIT STATE
-
- Since the remote side has already sent FIN, RECEIVEs must be
- satisfied by text already on hand, but not yet delivered to the
- user. If no text is awaiting delivery, the RECEIVE will get a
- "error: connection closing" response. Otherwise, any remaining
- text can be used to satisfy the RECEIVE.
-
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT STATE
-
- Return "error: connection closing".
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 59]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- CLOSE Call
-
-
-
- CLOSE Call
-
- CLOSED STATE (i.e., TCB does not exist)
-
- If the user does not have access to such a connection, return
- "error: connection illegal for this process".
-
- Otherwise, return "error: connection does not exist".
-
- LISTEN STATE
-
- Any outstanding RECEIVEs are returned with "error: closing"
- responses. Delete TCB, enter CLOSED state, and return.
-
- SYN-SENT STATE
-
- Delete the TCB and return "error: closing" responses to any
- queued SENDs, or RECEIVEs.
-
- SYN-RECEIVED STATE
-
- If no SENDs have been issued and there is no pending data to send,
- then form a FIN segment and send it, and enter FIN-WAIT-1 state;
- otherwise queue for processing after entering ESTABLISHED state.
-
- ESTABLISHED STATE
-
- Queue this until all preceding SENDs have been segmentized, then
- form a FIN segment and send it. In any case, enter FIN-WAIT-1
- state.
-
- FIN-WAIT-1 STATE
- FIN-WAIT-2 STATE
-
- Strictly speaking, this is an error and should receive a "error:
- connection closing" response. An "ok" response would be
- acceptable, too, as long as a second FIN is not emitted (the first
- FIN may be retransmitted though).
-
-
-
-
-
-
-
-
-
-
-
-[Page 60]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-CLOSE Call
-
-
-
- CLOSE-WAIT STATE
-
- Queue this request until all preceding SENDs have been
- segmentized; then send a FIN segment, enter CLOSING state.
-
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT STATE
-
- Respond with "error: connection closing".
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 61]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- ABORT Call
-
-
-
- ABORT Call
-
- CLOSED STATE (i.e., TCB does not exist)
-
- If the user should not have access to such a connection, return
- "error: connection illegal for this process".
-
- Otherwise return "error: connection does not exist".
-
- LISTEN STATE
-
- Any outstanding RECEIVEs should be returned with "error:
- connection reset" responses. Delete TCB, enter CLOSED state, and
- return.
-
- SYN-SENT STATE
-
- All queued SENDs and RECEIVEs should be given "connection reset"
- notification, delete the TCB, enter CLOSED state, and return.
-
- SYN-RECEIVED STATE
- ESTABLISHED STATE
- FIN-WAIT-1 STATE
- FIN-WAIT-2 STATE
- CLOSE-WAIT STATE
-
- Send a reset segment:
-
- <SEQ=SND.NXT><CTL=RST>
-
- All queued SENDs and RECEIVEs should be given "connection reset"
- notification; all segments queued for transmission (except for the
- RST formed above) or retransmission should be flushed, delete the
- TCB, enter CLOSED state, and return.
-
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT STATE
-
- Respond with "ok" and delete the TCB, enter CLOSED state, and
- return.
-
-
-
-
-
-
-
-
-[Page 62]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-STATUS Call
-
-
-
- STATUS Call
-
- CLOSED STATE (i.e., TCB does not exist)
-
- If the user should not have access to such a connection, return
- "error: connection illegal for this process".
-
- Otherwise return "error: connection does not exist".
-
- LISTEN STATE
-
- Return "state = LISTEN", and the TCB pointer.
-
- SYN-SENT STATE
-
- Return "state = SYN-SENT", and the TCB pointer.
-
- SYN-RECEIVED STATE
-
- Return "state = SYN-RECEIVED", and the TCB pointer.
-
- ESTABLISHED STATE
-
- Return "state = ESTABLISHED", and the TCB pointer.
-
- FIN-WAIT-1 STATE
-
- Return "state = FIN-WAIT-1", and the TCB pointer.
-
- FIN-WAIT-2 STATE
-
- Return "state = FIN-WAIT-2", and the TCB pointer.
-
- CLOSE-WAIT STATE
-
- Return "state = CLOSE-WAIT", and the TCB pointer.
-
- CLOSING STATE
-
- Return "state = CLOSING", and the TCB pointer.
-
- LAST-ACK STATE
-
- Return "state = LAST-ACK", and the TCB pointer.
-
-
-
-
-
- [Page 63]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- STATUS Call
-
-
-
- TIME-WAIT STATE
-
- Return "state = TIME-WAIT", and the TCB pointer.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 64]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-SEGMENT ARRIVES
-
-
-
- SEGMENT ARRIVES
-
- If the state is CLOSED (i.e., TCB does not exist) then
-
- all data in the incoming segment is discarded. An incoming
- segment containing a RST is discarded. An incoming segment not
- containing a RST causes a RST to be sent in response. The
- acknowledgment and sequence field values are selected to make the
- reset sequence acceptable to the TCP that sent the offending
- segment.
-
- If the ACK bit is off, sequence number zero is used,
-
- <SEQ=0><ACK=SEG.SEQ+SEG.LEN><CTL=RST,ACK>
-
- If the ACK bit is on,
-
- <SEQ=SEG.ACK><CTL=RST>
-
- Return.
-
- If the state is LISTEN then
-
- first check for an RST
-
- An incoming RST should be ignored. Return.
-
- second check for an ACK
-
- Any acknowledgment is bad if it arrives on a connection still in
- the LISTEN state. An acceptable reset segment should be formed
- for any arriving ACK-bearing segment. The RST should be
- formatted as follows:
-
- <SEQ=SEG.ACK><CTL=RST>
-
- Return.
-
- third check for a SYN
-
- If the SYN bit is set, check the security. If the
- security/compartment on the incoming segment does not exactly
- match the security/compartment in the TCB then send a reset and
- return.
-
- <SEQ=SEG.ACK><CTL=RST>
-
-
-
- [Page 65]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- SEGMENT ARRIVES
-
-
-
- If the SEG.PRC is greater than the TCB.PRC then if allowed by
- the user and the system set TCB.PRC<-SEG.PRC, if not allowed
- send a reset and return.
-
- <SEQ=SEG.ACK><CTL=RST>
-
- If the SEG.PRC is less than the TCB.PRC then continue.
-
- Set RCV.NXT to SEG.SEQ+1, IRS is set to SEG.SEQ and any other
- control or text should be queued for processing later. ISS
- should be selected and a SYN segment sent of the form:
-
- <SEQ=ISS><ACK=RCV.NXT><CTL=SYN,ACK>
-
- SND.NXT is set to ISS+1 and SND.UNA to ISS. The connection
- state should be changed to SYN-RECEIVED. Note that any other
- incoming control or data (combined with SYN) will be processed
- in the SYN-RECEIVED state, but processing of SYN and ACK should
- not be repeated. If the listen was not fully specified (i.e.,
- the foreign socket was not fully specified), then the
- unspecified fields should be filled in now.
-
- fourth other text or control
-
- Any other control or text-bearing segment (not containing SYN)
- must have an ACK and thus would be discarded by the ACK
- processing. An incoming RST segment could not be valid, since
- it could not have been sent in response to anything sent by this
- incarnation of the connection. So you are unlikely to get here,
- but if you do, drop the segment, and return.
-
- If the state is SYN-SENT then
-
- first check the ACK bit
-
- If the ACK bit is set
-
- If SEG.ACK =< ISS, or SEG.ACK > SND.NXT, send a reset (unless
- the RST bit is set, if so drop the segment and return)
-
- <SEQ=SEG.ACK><CTL=RST>
-
- and discard the segment. Return.
-
- If SND.UNA =< SEG.ACK =< SND.NXT then the ACK is acceptable.
-
- second check the RST bit
-
-
-[Page 66]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-SEGMENT ARRIVES
-
-
-
- If the RST bit is set
-
- If the ACK was acceptable then signal the user "error:
- connection reset", drop the segment, enter CLOSED state,
- delete TCB, and return. Otherwise (no ACK) drop the segment
- and return.
-
- third check the security and precedence
-
- If the security/compartment in the segment does not exactly
- match the security/compartment in the TCB, send a reset
-
- If there is an ACK
-
- <SEQ=SEG.ACK><CTL=RST>
-
- Otherwise
-
- <SEQ=0><ACK=SEG.SEQ+SEG.LEN><CTL=RST,ACK>
-
- If there is an ACK
-
- The precedence in the segment must match the precedence in the
- TCB, if not, send a reset
-
- <SEQ=SEG.ACK><CTL=RST>
-
- If there is no ACK
-
- If the precedence in the segment is higher than the precedence
- in the TCB then if allowed by the user and the system raise
- the precedence in the TCB to that in the segment, if not
- allowed to raise the prec then send a reset.
-
- <SEQ=0><ACK=SEG.SEQ+SEG.LEN><CTL=RST,ACK>
-
- If the precedence in the segment is lower than the precedence
- in the TCB continue.
-
- If a reset was sent, discard the segment and return.
-
- fourth check the SYN bit
-
- This step should be reached only if the ACK is ok, or there is
- no ACK, and it the segment did not contain a RST.
-
- If the SYN bit is on and the security/compartment and precedence
-
-
- [Page 67]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- SEGMENT ARRIVES
-
-
-
- are acceptable then, RCV.NXT is set to SEG.SEQ+1, IRS is set to
- SEG.SEQ. SND.UNA should be advanced to equal SEG.ACK (if there
- is an ACK), and any segments on the retransmission queue which
- are thereby acknowledged should be removed.
-
- If SND.UNA > ISS (our SYN has been ACKed), change the connection
- state to ESTABLISHED, form an ACK segment
-
- <SEQ=SND.NXT><ACK=RCV.NXT><CTL=ACK>
-
- and send it. Data or controls which were queued for
- transmission may be included. If there are other controls or
- text in the segment then continue processing at the sixth step
- below where the URG bit is checked, otherwise return.
-
- Otherwise enter SYN-RECEIVED, form a SYN,ACK segment
-
- <SEQ=ISS><ACK=RCV.NXT><CTL=SYN,ACK>
-
- and send it. If there are other controls or text in the
- segment, queue them for processing after the ESTABLISHED state
- has been reached, return.
-
- fifth, if neither of the SYN or RST bits is set then drop the
- segment and return.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 68]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-SEGMENT ARRIVES
-
-
-
- Otherwise,
-
- first check sequence number
-
- SYN-RECEIVED STATE
- ESTABLISHED STATE
- FIN-WAIT-1 STATE
- FIN-WAIT-2 STATE
- CLOSE-WAIT STATE
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT STATE
-
- Segments are processed in sequence. Initial tests on arrival
- are used to discard old duplicates, but further processing is
- done in SEG.SEQ order. If a segment's contents straddle the
- boundary between old and new, only the new parts should be
- processed.
-
- There are four cases for the acceptability test for an incoming
- segment:
-
- Segment Receive Test
- Length Window
- ------- ------- -------------------------------------------
-
- 0 0 SEG.SEQ = RCV.NXT
-
- 0 >0 RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
-
- >0 0 not acceptable
-
- >0 >0 RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
- or RCV.NXT =< SEG.SEQ+SEG.LEN-1 < RCV.NXT+RCV.WND
-
- If the RCV.WND is zero, no segments will be acceptable, but
- special allowance should be made to accept valid ACKs, URGs and
- RSTs.
-
- If an incoming segment is not acceptable, an acknowledgment
- should be sent in reply (unless the RST bit is set, if so drop
- the segment and return):
-
- <SEQ=SND.NXT><ACK=RCV.NXT><CTL=ACK>
-
- After sending the acknowledgment, drop the unacceptable segment
- and return.
-
-
- [Page 69]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- SEGMENT ARRIVES
-
-
-
- In the following it is assumed that the segment is the idealized
- segment that begins at RCV.NXT and does not exceed the window.
- One could tailor actual segments to fit this assumption by
- trimming off any portions that lie outside the window (including
- SYN and FIN), and only processing further if the segment then
- begins at RCV.NXT. Segments with higher begining sequence
- numbers may be held for later processing.
-
- second check the RST bit,
-
- SYN-RECEIVED STATE
-
- If the RST bit is set
-
- If this connection was initiated with a passive OPEN (i.e.,
- came from the LISTEN state), then return this connection to
- LISTEN state and return. The user need not be informed. If
- this connection was initiated with an active OPEN (i.e., came
- from SYN-SENT state) then the connection was refused, signal
- the user "connection refused". In either case, all segments
- on the retransmission queue should be removed. And in the
- active OPEN case, enter the CLOSED state and delete the TCB,
- and return.
-
- ESTABLISHED
- FIN-WAIT-1
- FIN-WAIT-2
- CLOSE-WAIT
-
- If the RST bit is set then, any outstanding RECEIVEs and SEND
- should receive "reset" responses. All segment queues should be
- flushed. Users should also receive an unsolicited general
- "connection reset" signal. Enter the CLOSED state, delete the
- TCB, and return.
-
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT
-
- If the RST bit is set then, enter the CLOSED state, delete the
- TCB, and return.
-
-
-
-
-
-
-
-
-[Page 70]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-SEGMENT ARRIVES
-
-
-
- third check security and precedence
-
- SYN-RECEIVED
-
- If the security/compartment and precedence in the segment do not
- exactly match the security/compartment and precedence in the TCB
- then send a reset, and return.
-
- ESTABLISHED STATE
-
- If the security/compartment and precedence in the segment do not
- exactly match the security/compartment and precedence in the TCB
- then send a reset, any outstanding RECEIVEs and SEND should
- receive "reset" responses. All segment queues should be
- flushed. Users should also receive an unsolicited general
- "connection reset" signal. Enter the CLOSED state, delete the
- TCB, and return.
-
- Note this check is placed following the sequence check to prevent
- a segment from an old connection between these ports with a
- different security or precedence from causing an abort of the
- current connection.
-
- fourth, check the SYN bit,
-
- SYN-RECEIVED
- ESTABLISHED STATE
- FIN-WAIT STATE-1
- FIN-WAIT STATE-2
- CLOSE-WAIT STATE
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT STATE
-
- If the SYN is in the window it is an error, send a reset, any
- outstanding RECEIVEs and SEND should receive "reset" responses,
- all segment queues should be flushed, the user should also
- receive an unsolicited general "connection reset" signal, enter
- the CLOSED state, delete the TCB, and return.
-
- If the SYN is not in the window this step would not be reached
- and an ack would have been sent in the first step (sequence
- number check).
-
-
-
-
-
-
- [Page 71]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- SEGMENT ARRIVES
-
-
-
- fifth check the ACK field,
-
- if the ACK bit is off drop the segment and return
-
- if the ACK bit is on
-
- SYN-RECEIVED STATE
-
- If SND.UNA =< SEG.ACK =< SND.NXT then enter ESTABLISHED state
- and continue processing.
-
- If the segment acknowledgment is not acceptable, form a
- reset segment,
-
- <SEQ=SEG.ACK><CTL=RST>
-
- and send it.
-
- ESTABLISHED STATE
-
- If SND.UNA < SEG.ACK =< SND.NXT then, set SND.UNA <- SEG.ACK.
- Any segments on the retransmission queue which are thereby
- entirely acknowledged are removed. Users should receive
- positive acknowledgments for buffers which have been SENT and
- fully acknowledged (i.e., SEND buffer should be returned with
- "ok" response). If the ACK is a duplicate
- (SEG.ACK < SND.UNA), it can be ignored. If the ACK acks
- something not yet sent (SEG.ACK > SND.NXT) then send an ACK,
- drop the segment, and return.
-
- If SND.UNA < SEG.ACK =< SND.NXT, the send window should be
- updated. If (SND.WL1 < SEG.SEQ or (SND.WL1 = SEG.SEQ and
- SND.WL2 =< SEG.ACK)), set SND.WND <- SEG.WND, set
- SND.WL1 <- SEG.SEQ, and set SND.WL2 <- SEG.ACK.
-
- Note that SND.WND is an offset from SND.UNA, that SND.WL1
- records the sequence number of the last segment used to update
- SND.WND, and that SND.WL2 records the acknowledgment number of
- the last segment used to update SND.WND. The check here
- prevents using old segments to update the window.
-
-
-
-
-
-
-
-
-
-[Page 72]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-SEGMENT ARRIVES
-
-
-
- FIN-WAIT-1 STATE
-
- In addition to the processing for the ESTABLISHED state, if
- our FIN is now acknowledged then enter FIN-WAIT-2 and continue
- processing in that state.
-
- FIN-WAIT-2 STATE
-
- In addition to the processing for the ESTABLISHED state, if
- the retransmission queue is empty, the user's CLOSE can be
- acknowledged ("ok") but do not delete the TCB.
-
- CLOSE-WAIT STATE
-
- Do the same processing as for the ESTABLISHED state.
-
- CLOSING STATE
-
- In addition to the processing for the ESTABLISHED state, if
- the ACK acknowledges our FIN then enter the TIME-WAIT state,
- otherwise ignore the segment.
-
- LAST-ACK STATE
-
- The only thing that can arrive in this state is an
- acknowledgment of our FIN. If our FIN is now acknowledged,
- delete the TCB, enter the CLOSED state, and return.
-
- TIME-WAIT STATE
-
- The only thing that can arrive in this state is a
- retransmission of the remote FIN. Acknowledge it, and restart
- the 2 MSL timeout.
-
- sixth, check the URG bit,
-
- ESTABLISHED STATE
- FIN-WAIT-1 STATE
- FIN-WAIT-2 STATE
-
- If the URG bit is set, RCV.UP <- max(RCV.UP,SEG.UP), and signal
- the user that the remote side has urgent data if the urgent
- pointer (RCV.UP) is in advance of the data consumed. If the
- user has already been signaled (or is still in the "urgent
- mode") for this continuous sequence of urgent data, do not
- signal the user again.
-
-
-
- [Page 73]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- SEGMENT ARRIVES
-
-
-
- CLOSE-WAIT STATE
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT
-
- This should not occur, since a FIN has been received from the
- remote side. Ignore the URG.
-
- seventh, process the segment text,
-
- ESTABLISHED STATE
- FIN-WAIT-1 STATE
- FIN-WAIT-2 STATE
-
- Once in the ESTABLISHED state, it is possible to deliver segment
- text to user RECEIVE buffers. Text from segments can be moved
- into buffers until either the buffer is full or the segment is
- empty. If the segment empties and carries an PUSH flag, then
- the user is informed, when the buffer is returned, that a PUSH
- has been received.
-
- When the TCP takes responsibility for delivering the data to the
- user it must also acknowledge the receipt of the data.
-
- Once the TCP takes responsibility for the data it advances
- RCV.NXT over the data accepted, and adjusts RCV.WND as
- apporopriate to the current buffer availability. The total of
- RCV.NXT and RCV.WND should not be reduced.
-
- Please note the window management suggestions in section 3.7.
-
- Send an acknowledgment of the form:
-
- <SEQ=SND.NXT><ACK=RCV.NXT><CTL=ACK>
-
- This acknowledgment should be piggybacked on a segment being
- transmitted if possible without incurring undue delay.
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 74]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-SEGMENT ARRIVES
-
-
-
- CLOSE-WAIT STATE
- CLOSING STATE
- LAST-ACK STATE
- TIME-WAIT STATE
-
- This should not occur, since a FIN has been received from the
- remote side. Ignore the segment text.
-
- eighth, check the FIN bit,
-
- Do not process the FIN if the state is CLOSED, LISTEN or SYN-SENT
- since the SEG.SEQ cannot be validated; drop the segment and
- return.
-
- If the FIN bit is set, signal the user "connection closing" and
- return any pending RECEIVEs with same message, advance RCV.NXT
- over the FIN, and send an acknowledgment for the FIN. Note that
- FIN implies PUSH for any segment text not yet delivered to the
- user.
-
- SYN-RECEIVED STATE
- ESTABLISHED STATE
-
- Enter the CLOSE-WAIT state.
-
- FIN-WAIT-1 STATE
-
- If our FIN has been ACKed (perhaps in this segment), then
- enter TIME-WAIT, start the time-wait timer, turn off the other
- timers; otherwise enter the CLOSING state.
-
- FIN-WAIT-2 STATE
-
- Enter the TIME-WAIT state. Start the time-wait timer, turn
- off the other timers.
-
- CLOSE-WAIT STATE
-
- Remain in the CLOSE-WAIT state.
-
- CLOSING STATE
-
- Remain in the CLOSING state.
-
- LAST-ACK STATE
-
- Remain in the LAST-ACK state.
-
-
- [Page 75]
-
-
- September 1981
-Transmission Control Protocol
-Functional Specification
- SEGMENT ARRIVES
-
-
-
- TIME-WAIT STATE
-
- Remain in the TIME-WAIT state. Restart the 2 MSL time-wait
- timeout.
-
- and return.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 76]
-
-
-September 1981
- Transmission Control Protocol
- Functional Specification
-USER TIMEOUT
-
-
-
- USER TIMEOUT
-
- For any state if the user timeout expires, flush all queues, signal
- the user "error: connection aborted due to user timeout" in general
- and for any outstanding calls, delete the TCB, enter the CLOSED
- state and return.
-
- RETRANSMISSION TIMEOUT
-
- For any state if the retransmission timeout expires on a segment in
- the retransmission queue, send the segment at the front of the
- retransmission queue again, reinitialize the retransmission timer,
- and return.
-
- TIME-WAIT TIMEOUT
-
- If the time-wait timeout expires on a connection delete the TCB,
- enter the CLOSED state and return.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 77]
-
-
- September 1981
-Transmission Control Protocol
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[Page 78]
-
-
-September 1981
- Transmission Control Protocol
-
-
-
- GLOSSARY
-
-
-
-1822
- BBN Report 1822, "The Specification of the Interconnection of
- a Host and an IMP". The specification of interface between a
- host and the ARPANET.
-
-ACK
- A control bit (acknowledge) occupying no sequence space, which
- indicates that the acknowledgment field of this segment
- specifies the next sequence number the sender of this segment
- is expecting to receive, hence acknowledging receipt of all
- previous sequence numbers.
-
-ARPANET message
- The unit of transmission between a host and an IMP in the
- ARPANET. The maximum size is about 1012 octets (8096 bits).
-
-ARPANET packet
- A unit of transmission used internally in the ARPANET between
- IMPs. The maximum size is about 126 octets (1008 bits).
-
-connection
- A logical communication path identified by a pair of sockets.
-
-datagram
- A message sent in a packet switched computer communications
- network.
-
-Destination Address
- The destination address, usually the network and host
- identifiers.
-
-FIN
- A control bit (finis) occupying one sequence number, which
- indicates that the sender will send no more data or control
- occupying sequence space.
-
-fragment
- A portion of a logical unit of data, in particular an internet
- fragment is a portion of an internet datagram.
-
-FTP
- A file transfer protocol.
-
-
-
-
-
- [Page 79]
-
-
- September 1981
-Transmission Control Protocol
-Glossary
-
-
-
-header
- Control information at the beginning of a message, segment,
- fragment, packet or block of data.
-
-host
- A computer. In particular a source or destination of messages
- from the point of view of the communication network.
-
-Identification
- An Internet Protocol field. This identifying value assigned
- by the sender aids in assembling the fragments of a datagram.
-
-IMP
- The Interface Message Processor, the packet switch of the
- ARPANET.
-
-internet address
- A source or destination address specific to the host level.
-
-internet datagram
- The unit of data exchanged between an internet module and the
- higher level protocol together with the internet header.
-
-internet fragment
- A portion of the data of an internet datagram with an internet
- header.
-
-IP
- Internet Protocol.
-
-IRS
- The Initial Receive Sequence number. The first sequence
- number used by the sender on a connection.
-
-ISN
- The Initial Sequence Number. The first sequence number used
- on a connection, (either ISS or IRS). Selected on a clock
- based procedure.
-
-ISS
- The Initial Send Sequence number. The first sequence number
- used by the sender on a connection.
-
-leader
- Control information at the beginning of a message or block of
- data. In particular, in the ARPANET, the control information
- on an ARPANET message at the host-IMP interface.
-
-
-
-[Page 80]
-
-
-September 1981
- Transmission Control Protocol
- Glossary
-
-
-
-left sequence
- This is the next sequence number to be acknowledged by the
- data receiving TCP (or the lowest currently unacknowledged
- sequence number) and is sometimes referred to as the left edge
- of the send window.
-
-local packet
- The unit of transmission within a local network.
-
-module
- An implementation, usually in software, of a protocol or other
- procedure.
-
-MSL
- Maximum Segment Lifetime, the time a TCP segment can exist in
- the internetwork system. Arbitrarily defined to be 2 minutes.
-
-octet
- An eight bit byte.
-
-Options
- An Option field may contain several options, and each option
- may be several octets in length. The options are used
- primarily in testing situations; for example, to carry
- timestamps. Both the Internet Protocol and TCP provide for
- options fields.
-
-packet
- A package of data with a header which may or may not be
- logically complete. More often a physical packaging than a
- logical packaging of data.
-
-port
- The portion of a socket that specifies which logical input or
- output channel of a process is associated with the data.
-
-process
- A program in execution. A source or destination of data from
- the point of view of the TCP or other host-to-host protocol.
-
-PUSH
- A control bit occupying no sequence space, indicating that
- this segment contains data that must be pushed through to the
- receiving user.
-
-RCV.NXT
- receive next sequence number
-
-
-
- [Page 81]
-
-
- September 1981
-Transmission Control Protocol
-Glossary
-
-
-
-RCV.UP
- receive urgent pointer
-
-RCV.WND
- receive window
-
-receive next sequence number
- This is the next sequence number the local TCP is expecting to
- receive.
-
-receive window
- This represents the sequence numbers the local (receiving) TCP
- is willing to receive. Thus, the local TCP considers that
- segments overlapping the range RCV.NXT to
- RCV.NXT + RCV.WND - 1 carry acceptable data or control.
- Segments containing sequence numbers entirely outside of this
- range are considered duplicates and discarded.
-
-RST
- A control bit (reset), occupying no sequence space, indicating
- that the receiver should delete the connection without further
- interaction. The receiver can determine, based on the
- sequence number and acknowledgment fields of the incoming
- segment, whether it should honor the reset command or ignore
- it. In no case does receipt of a segment containing RST give
- rise to a RST in response.
-
-RTP
- Real Time Protocol: A host-to-host protocol for communication
- of time critical information.
-
-SEG.ACK
- segment acknowledgment
-
-SEG.LEN
- segment length
-
-SEG.PRC
- segment precedence value
-
-SEG.SEQ
- segment sequence
-
-SEG.UP
- segment urgent pointer field
-
-
-
-
-
-[Page 82]
-
-
-September 1981
- Transmission Control Protocol
- Glossary
-
-
-
-SEG.WND
- segment window field
-
-segment
- A logical unit of data, in particular a TCP segment is the
- unit of data transfered between a pair of TCP modules.
-
-segment acknowledgment
- The sequence number in the acknowledgment field of the
- arriving segment.
-
-segment length
- The amount of sequence number space occupied by a segment,
- including any controls which occupy sequence space.
-
-segment sequence
- The number in the sequence field of the arriving segment.
-
-send sequence
- This is the next sequence number the local (sending) TCP will
- use on the connection. It is initially selected from an
- initial sequence number curve (ISN) and is incremented for
- each octet of data or sequenced control transmitted.
-
-send window
- This represents the sequence numbers which the remote
- (receiving) TCP is willing to receive. It is the value of the
- window field specified in segments from the remote (data
- receiving) TCP. The range of new sequence numbers which may
- be emitted by a TCP lies between SND.NXT and
- SND.UNA + SND.WND - 1. (Retransmissions of sequence numbers
- between SND.UNA and SND.NXT are expected, of course.)
-
-SND.NXT
- send sequence
-
-SND.UNA
- left sequence
-
-SND.UP
- send urgent pointer
-
-SND.WL1
- segment sequence number at last window update
-
-SND.WL2
- segment acknowledgment number at last window update
-
-
-
- [Page 83]
-
-
- September 1981
-Transmission Control Protocol
-Glossary
-
-
-
-SND.WND
- send window
-
-socket
- An address which specifically includes a port identifier, that
- is, the concatenation of an Internet Address with a TCP port.
-
-Source Address
- The source address, usually the network and host identifiers.
-
-SYN
- A control bit in the incoming segment, occupying one sequence
- number, used at the initiation of a connection, to indicate
- where the sequence numbering will start.
-
-TCB
- Transmission control block, the data structure that records
- the state of a connection.
-
-TCB.PRC
- The precedence of the connection.
-
-TCP
- Transmission Control Protocol: A host-to-host protocol for
- reliable communication in internetwork environments.
-
-TOS
- Type of Service, an Internet Protocol field.
-
-Type of Service
- An Internet Protocol field which indicates the type of service
- for this internet fragment.
-
-URG
- A control bit (urgent), occupying no sequence space, used to
- indicate that the receiving user should be notified to do
- urgent processing as long as there is data to be consumed with
- sequence numbers less than the value indicated in the urgent
- pointer.
-
-urgent pointer
- A control field meaningful only when the URG bit is on. This
- field communicates the value of the urgent pointer which
- indicates the data octet associated with the sending user's
- urgent call.
-
-
-
-
-
-[Page 84]
-
-
-September 1981
- Transmission Control Protocol
-
-
-
- REFERENCES
-
-
-
-[1] Cerf, V., and R. Kahn, "A Protocol for Packet Network
- Intercommunication", IEEE Transactions on Communications,
- Vol. COM-22, No. 5, pp 637-648, May 1974.
-
-[2] Postel, J. (ed.), "Internet Protocol - DARPA Internet Program
- Protocol Specification", RFC 791, USC/Information Sciences
- Institute, September 1981.
-
-[3] Dalal, Y. and C. Sunshine, "Connection Management in Transport
- Protocols", Computer Networks, Vol. 2, No. 6, pp. 454-473,
- December 1978.
-
-[4] Postel, J., "Assigned Numbers", RFC 790, USC/Information Sciences
- Institute, September 1981.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [Page 85]
-