Link Control Protocol

In computer networking, the Link Control Protocol (LCP) forms part of the Point-to-Point Protocol (PPP), within the family of Internet protocols. In setting up PPP communications, both the sending and receiving devices send out LCP packets to determine the standards of the ensuing data transmission.

The protocol:

  • checks the identity of the linked device and either accepts or rejects the device
  • determines the acceptable packet size for transmission
  • searches for errors in configuration
  • can terminate the link if requirements exceed the parameters

LCP packets are sent during the Link Establishment Phase of PPP, after the physical layer has been made ready from the Link Dead state. No transmission of network-layer protocols such as IP may be transmitted across PPP until after the Link Establishment or Authentication phases are complete. When a connection is requested by a peer to be terminated (or if Authentication fails), the Link Termination Phase is performed, and PPP returns to the Link Dead state.

Structure

class="wikitable"

! style="width:7%; border-bottom:none; border-right:none;" |Offsets

! style="width:7%; border-left:none;" |Octet

! colspan="8" |0

! colspan="8" |1

! colspan="8" |2

! colspan="8" |3

style="border-top: none" |Octet

!Bit

! style="width:2.4%;" |0

! style="width:2.4%;" |1

! style="width:2.4%;" |2

! style="width:2.4%;" |3

! style="width:2.4%;" |4

! style="width:2.4%;" |5

! style="width:2.4%;" |6

! style="width:2.4%;" |7

! style="width:2.4%;" |8

! style="width:2.4%;" |9

! style="width:2.4%;" |10

! style="width:2.4%;" |11

! style="width:2.4%;" |12

! style="width:2.4%;" |13

! style="width:2.4%;" |14

! style="width:2.4%;" |15

! style="width:2.4%;" |16

! style="width:2.4%;" |17

! style="width:2.4%;" |18

! style="width:2.4%;" |19

! style="width:2.4%;" |20

! style="width:2.4%;" |21

! style="width:2.4%;" |22

! style="width:2.4%;" |23

! style="width:2.4%;" |24

! style="width:2.4%;" |25

! style="width:2.4%;" |26

! style="width:2.4%;" |27

! style="width:2.4%;" |28

! style="width:2.4%;" |29

! style="width:2.4%;" |30

! style="width:2.4%;" |31

colspan="34" |Point-to-Point Protocol
0

!0

| colspan="8" |Flag (0x7E)

| colspan="8" |Address (0xFF)

| colspan="8" |Control (0x03)

| colspan="8" |Protocol (0xC0)

4

!32

| colspan="8" |Protocol, cont. (0x21)

! colspan="24" |

colspan="34" |Link Control Protocol
0

!0

| colspan="8" |Code

| colspan="8" |Identifier

| colspan="16" |Length

colspan="2" rowspan="5" |

! colspan="32" |Link Configuration

colspan="2" rowspan="4" |Code

|1

! colspan="2" rowspan="4" |Name

| colspan="5" |Configure-Request

! colspan="4" rowspan="4" |Description

| colspan="18" |Peer requesting connection with the specified options over link defaults.

2

| colspan="5" |Configure-Ack

| colspan="18" |Peer requesting connection with the specified options over link defaults.

3

| colspan="5" |Configure-Nak

| colspan="18" |Peer recognizes given options, but some are not acceptable.

4

| colspan="5" |Configure-Reject

| colspan="18" |Peer does not recognize or is prohibited from accepting some given options.

4

!32

| colspan="32" |List of option data, size variable

colspan="2" rowspan="3" |

! colspan="32" |Link Termination

colspan="2" rowspan="2" |Code

|5

! colspan="2" rowspan="2" |Name

| colspan="5" |Terminate-Request

! colspan="4" rowspan="2" |Description

| colspan="18" |Peer requesting to close the connection.

6

| colspan="5" |Terminate-Ack

| colspan="18" |Peer accepts connection closure, or requires re-negotiation.

4

!32

| colspan="32" |Uninterpreted data by the sender, size variable

colspan="2" rowspan="2" |

! colspan="32" |Link Maintenance

colspan="2" |Code

|7

!Name

| colspan="5" |Code-Reject

! colspan="2" |Description

| colspan="21" |Peer does not recognize a provided LCP code.

4

!32

| colspan="32" |Faulting LCP Packet, size variable

colspan="2" rowspan="2" |

! colspan="2" |

! colspan="30" |LCP-Specific Codes

colspan="2" |Code

|8

!Name

| colspan="5" |Protocol-Reject

! colspan="2" |Description

| colspan="21" |Peer does not recognize a protocol used within the LCP Opened state.

4

!32

| colspan="16" |Rejected PPP Protocol

| colspan="16" |Faulting Packet, size variable

colspan="2" rowspan="3" |

! colspan="2" rowspan="3" |Code

|9

! rowspan="3" |Name

| colspan="5" |Echo-Request

! colspan="3" rowspan="3" |Description

| colspan="20" |Peer is requesting an Echo-Reply.

10

| colspan="5" |Echo-Reply

| colspan="20" |Peer is responding to an Echo-Request (only acceptable when in LCP Opened.)

11

| colspan="5" |Discard-Request

| colspan="20" |Peer is sending data to be discarded ("sinked") by the remote peer.

4

!32

| colspan="32" |Magic Number (0, if Configure-Request / Configure-Ack have not established one yet)

8

!64

| colspan="32" |Uninterpreted data by the sender, size variable

= Link Configuration Option =

class="wikitable"

! style="width:7%; border-bottom:none; border-right:none;" |Offsets

! style="width:7%; border-left:none;" |Octet

! colspan="8" |0

! colspan="8" |1

! colspan="8" |2

! colspan="8" |3

style="border-top: none" |Octet

!Bit

! style="width:2.4%;" |0

! style="width:2.4%;" |1

! style="width:2.4%;" |2

! style="width:2.4%;" |3

! style="width:2.4%;" |4

! style="width:2.4%;" |5

! style="width:2.4%;" |6

! style="width:2.4%;" |7

! style="width:2.4%;" |8

! style="width:2.4%;" |9

! style="width:2.4%;" |10

! style="width:2.4%;" |11

! style="width:2.4%;" |12

! style="width:2.4%;" |13

! style="width:2.4%;" |14

! style="width:2.4%;" |15

! style="width:2.4%;" |16

! style="width:2.4%;" |17

! style="width:2.4%;" |18

! style="width:2.4%;" |19

! style="width:2.4%;" |20

! style="width:2.4%;" |21

! style="width:2.4%;" |22

! style="width:2.4%;" |23

! style="width:2.4%;" |24

! style="width:2.4%;" |25

! style="width:2.4%;" |26

! style="width:2.4%;" |27

! style="width:2.4%;" |28

! style="width:2.4%;" |29

! style="width:2.4%;" |30

! style="width:2.4%;" |31

0

!0

| colspan="8" |Type

| colspan="8" |Length

! colspan="16" |

colspan="2" |

! colspan="2" |Type

|0

! colspan="2" |Name

| colspan="5" |Vendor Specific

! colspan="3" |Description

| colspan="19" |Vendor specific data not defined by the PPP specification.

2

!16

| colspan="24" |Vendor's Organizationally Unique Identifier

| colspan="8" |Kind (OUI Subtype)

6

!48

| colspan="32" |Vendor defined data, size variable

colspan="2" |

! colspan="2" |Type

|1

! colspan="2" |Name

| colspan="5" |Maximum-Receive-Unit

! colspan="3" |Description

| colspan="19" |Defines a peer's MRU, overriding the default of 1,500 octets.

2

!16

| colspan="16" |The maximum-receive-unit for this peer's implementation

! colspan="16" |

colspan="2" |

! colspan="2" |Type

|3

! colspan="2" |Name

| colspan="5" |Authentication-Protocol

! colspan="3" |Description

| colspan="19" |Defines an authentication protocol for a remote peer to authenticate with before transitioning phases.

2

!16

| colspan="16" |The requested authentication protocol, assigned by IANA{{Cite web |title=Point-to-Point (PPP) Protocol Field Assignments |url=https://www.iana.org/assignments/ppp-numbers/ppp-numbers.xhtml#ppp-numbers-9 |access-date=2025-03-18 |website=www.iana.org}}

| colspan="16" |Additional data for this protocol, size variable

colspan="2" |

! colspan="2" |Type

|4

! colspan="2" |Name

| colspan="5" |Quality-Protocol

! colspan="3" |Description

| colspan="19" |Defines a quality protocol for link quality monitoring.

2

!16

| colspan="16" |The requested quality protocol

| colspan="16" |Additional data for this protocol, size variable

colspan="2" |

! colspan="2" |Type

|5

! colspan="2" |Name

| colspan="5" |Magic-Number

! colspan="3" |Description

| colspan="19" |Defines a unique identifier for a peer.

2

!16

| colspan="32" |Magic number

colspan="2" rowspan="2" |

! colspan="2" |Type

|7

! colspan="2" |Name

| colspan="6" |Protocol-Field-Compression

! colspan="3" |Description

| colspan="18" |No data. Refer to RFC 1661 Section 6.5 for details.

colspan="2" |Type

|8

! colspan="2" |Name

| colspan="8" |Address-and-Control-Field-Compression

! colspan="3" |Description

| colspan="16" |No data. Refer to RFC 1661 Section 6.6 for details.

References

{{Reflist}}