1.. _ppp:
2
3Point-to-Point Protocol (PPP) Support
4#####################################
5
6.. contents::
7    :local:
8    :depth: 2
9
10Overview
11********
12
13`Point-to-Point Protocol
14<https://en.wikipedia.org/wiki/Point-to-Point_Protocol>`_ (PPP) is a data link
15layer (layer 2) communications protocol used to establish a direct connection
16between two nodes. PPP is used over many types of serial links since IP packets
17cannot be transmitted over a modem line on their own, without some data link
18protocol.
19
20In Zephyr, each individual PPP link is modelled as a network interface. This
21is similar to how Linux implements PPP.
22
23PPP support must be enabled at compile time by setting option
24:kconfig:option:`CONFIG_NET_PPP` and :kconfig:option:`CONFIG_NET_L2_PPP`.
25The PPP support in Zephyr 2.0 is still experimental and the implementation
26supports only these protocols:
27
28* LCP (Link Control Protocol,
29  `RFC1661 <https://tools.ietf.org/html/rfc1661>`__)
30* HDLC (High-level data link control,
31  `RFC1662 <https://tools.ietf.org/html/rfc1662>`__)
32* IPCP (IP Control Protocol,
33  `RFC1332 <https://tools.ietf.org/html/rfc1332>`__)
34* IPV6CP (IPv6 Control Protocol,
35  `RFC5072 <https://tools.ietf.org/html/rfc5072>`__)
36
37See also the :zephyr_file:`samples/net/sockets/echo_server/overlay-ppp.conf`
38file for configuration option examples.
39For using PPP with GSM modem, see :ref:`gsm_modem` for additional information.
40
41Testing
42*******
43
44See the `net-tools README`_ file for more details on how to test the Zephyr PPP
45against pppd running in Linux.
46
47.. _net-tools README:
48   https://github.com/zephyrproject-rtos/net-tools/blob/master/README.md#ppp-connectivity
49