IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

IMPORTANT: Compte amb la ambigueitat del nom PPP ja que pot fer tant referència a un protocol molt concret com a un conjunt de protocols basats en connexions punt a punt

S'utilitza el concepte Point to Point Protocol per fer referència a qualsevol protocol que realizi connexions punt a punt. Aquestes comunicacions punt a punt poden ser utilitzades normalment de dos formes:

  • Línies dedicades: s'utilitza una medi físic dedicat per a fer l'enllaç punt a punt. Les línies dedicades es poden realitzar de forma privada (enllaç per cable, fibra o tecnologies inalàmbriques), comprant-les a un operador (l'operador s'encarrega de crear un circuit dedicat entre els dos punts utilitzant la seva xarxa)
  • VPN: utilitzant xarxes públiques com Internet és realitzen connexions punt a punt. L'últim cas és el que s'aplica en les anomenades Xarxes privades virtuals (VPN)

Protocols PPP

Hi ha infinitut de protocols per a realitzar connexions punt a punt. Consulteu també VPN

PPP

PPP and TCP/IP protocol stack
Application FTP SMTP HTTP DNS
Transport TCP UDP
Internet IP IPv6
Network access PPP
PPPoE PPPoA
Ethernet ATM


Point-to-point Protocol (protocol punt a punt) conegut per les seves inicials PPP també és un prototol específic (RFC 1661) associat a TCP/IP

Diversos estandards defineixen el protocol (TODO):

  • RFC 1661 (estándar 51) - El protocolo punto-a-punto.
  • RFC 1662 (estándar 51) - PPP en tramas HDLC.
  • RFC 1663 - Transmisión segura en PPP.
  • RFC 1994 - CHAP, método de autenticación en PPP.
  • RFC 2153 - Extensiones PPP de los fabricantes.
  • RFC 2472 - Encapsulación de IPv6 sobre PPP.
  • RFC 2687 (propuesto) - PPP en tramas HDLC orientadas a aplicaciones de tiempo real.

Es tracta d'un protocol de la capa d'enllaç (del mateix nivell que Ethernet) que s'utilitza per transmetres trames IP en línias sèrie. Aquest protocol ha anat evolucionant i han sorgit versions a mesura que també han anat evolucionant els tipus de connexions (mòdem per línies de coure, ADSL, fibra, etc...)

Normalment s'utilitza per tal d'establir la connexió a Internet d'un particular a través del seu proveidor d'accés a Internet (ISP) i permet connectar directament dos dispositius/nodes d'una xarxa TCP/IP (per exemples el router ADSL i la pasarela ATM del operador).

Amb l'aparició de la anomenada banda ampla també s'han utilitzat versions del protocol PPP (com PPPoE o PPPoA).

A més del transport de les dades, PPP ofereix les següents funcionalitats:

  • Autenticació: normalment utilitzant clau d'accés. S'utilitzen dos sistemes d'autenticació PAP i CHAP.
  • Assignació dinàmica d'adreça IP. En els temps de les línies mòdem normalment els operadors especulaven tenint menys adreces IP que clients, ja que no tots els clients estaven connectats al mateix temps.

En alguns casos també s'utilitza (o les seves variants com PPTP) per tal de connectar remotaments xarxes o treballadors desplaçats a una xarxda privada sent aquest tipus de connexions les primeres VPN que es van utilitzar. Actualment existeixen protocols més avançats i pensats especificament per a crear VPNs (per exemple OpenVPN).

Altres protocols tenen funcionalitats diferents però encara són més àntics i obsolets (p.ex. SLIP).


Trama PPP

TODO

Una trama PPP esta basada en HDLC i té com a mínim 6 bytes un màxim indeterminat. La trama HDLC amb PPP és:

Etiqueta Dirección Control Protocolo Datos FCS Etiqueta
0x7e 0xFF 0x03 1 o 2 bytes<ref>Como se explica en el punto 2 de RFC 1661 Punto 2</ref> Longitud variable. Puede llevar relleno. 2 o 4 bytes 0x7e

Nota: 0x7e son 8 bits en notación hexadecimal, ver Hexadecimal para más información.

La dirección siempre es 0xFF que es la dirección de difusión estandar de todos los destinos. En PPP no hay direcciones individuales de cada estación dado que sólo hay dos. El campo control vale 0x03, que corresponde con tramas de usuario no númeradas en HDLC. Estos dos campos se pueden eliminar si se negocia en LCP "Address-and-Control-Field-Compression" (ACFC, compresión de los campos de dirección y control).

Los identificadores de protocolo están especificados en el RFC 1661. Los más importantes son:

  • 0x0021 para IP.
  • 0xc021 para LCP.
  • 0xc023 para PAP.
  • 0xc223 para CHAP.

El campo FCS (Frame Check Sequence) es una secuencia de comprobación de trama. Se utiliza para detectar errores en la transmisión de la trama. El transmisor calcula el CRC del contenido de la trama y lo coloca en el campo FCS. El receptor calcula el CRC de la trama que recibe y lo compara con el valor que hay en el FCS. Si los valores son distintos, hay bits erróneos en la trama, por lo que se descarta. Si el campo FCS es de 2 bytes se usa un CRC de 16 bits. Si el campo FCS es de 4 bytes, se usa un CRC de 32 bits.

Com funciona PPP?

Protocolo PPP.

PPP (i tots els (sub)protocols PPP) consta de les següents fases:

  1. Establiment de connexión o handshake. Durant aquesta fase els dos membres de la connexió PPP negocien els paràmetres de l'enllaç. En el cas del protocol PPP s'utilitza LCP per establir l'enllaç un protocol definit especificament per a PPP. Amb LCP es negocien el mètode d'autenticació, la mida dels datagrames i altres paràmetres
  2. Autenticación. No és obligatoria. Depén del protocol PPP s'utilitzen més o menys protocols d'autenticació. Amb PPP s'utilitza PAP i CHAP
  3. Configuració de la xarxa. Es negocient els pàrametres IP (adreça IP, servidors DNSs, etc)
  4. Transmisió: Amb PPP no hi ha xifratge de dades però amb altres protocol es pot xifrar. El protocol LCP s'encarrega de mantenir la línia activa en temsps d'inactivitat.
  5. Terminació. La connexió pot ser finalitzada en qualsevol moment i per qualsevol motiu.

IMPORTANT: S'utilitzen les paraules dial out per fer referència al procediment d'establiment de connexió i autenticació.

Comparació entre protocols PPP

Overhead dels protocols:

PPTP:

OeverheadPPTP.gif

L2TP:

OeverheadL2TP.gif
OeverheadL2TPIPSec.gif


Comparació de protocols com a VPN.

PPTP L2TP/IPSEC OpenVPN
Resum

Un protocol molt bàsic basat en PPP i creat per Microsoft. Va ser el primer protocol VPN suportat a Windows. PPTP no ofereix de per si xifratge o autenticació de per si i és basa en ser tunelat per PPP per oferir aquests serveis.

És un protocol avançat definit com estandard per la IETF (RFC 3193) i és recomanat com a remplçament de PPTP

OpenVPN és una solució avançada i Open Source creada per la companyia OpenVPN technologies i que és l'estandard de facto VPN en el mon Open Source'. Utilitza SSL/TLS com a protocols de xifratge.

Xifratge

PPP utilitza el protocol Microsoft's Point-to-Point Encryption Protocol (MPPE). MPPE implementa el xifratge RSA RC4 amb un maxim de 128 bits en les claus de sessió

L2TP utilitza IPSec per al xifratge. RFC 4835 permet utilitzar 3DES o AES com algorismes de xifratge.

OpenVPN utilitza OpenSSL. Suporta múltiples algorismes de xifratge com 3DES, AES, RC5, Blowfish.

Configuració

Totes les versions dels sistemes operatius més comuns tenen suport de sèrie per a PPTP (per exemple a Linux el Network-manager porta per defecte suport per a PPTP). També cal tenir en compte que la majoria de plataformes mòbils tenen suport de sèrie per a PPTP.

També inclòs per defecte en la majoria de sistemes operatius i plataformes mòbils.

OpenVPN is not included in any operating system release and requires the installation of client software. The software installers are very user friendly and installation typically takes less than 5 minutes.

Velocitat

Amb 128 bits la sobrecàrrega per xifratge és més baixa però no és molt determinant.

Encapsula les dades dos cops i per tant és el menys eficient.

Si s'utilitza amb UDP és molt ràpid, amb TCP no tant

ports

PPTP utilitza els ports 1723 i 47 (GRE) Es pot bloquejar fàcilment bloquejant el port 47.

Utilitza el port UDP 500 per a l'intercanvi inicial de claus i el portocol 50 per al xifratge IPSec, i el UDP 1701 per a la configuració inicial L2TP i el UDP 4500 per a NAT traversal.

OpenVPN pot canviar fàcilment el port que utilitza i es pot posar al port 443 amb lo que es fa molt díficil de bloquejar
Estabilitat/compatibilitat

PPTP no és un protocol gairé fiable, ja que no es recupera fàcilment en connexions inestables

L2TP/IPSec és més complexa que OpenVPN i pot ser més complicat de configurar en dispositius amb NAT però per la resta és tant estable com OpenVPN

Molt estable i perfecte en connexions WIFI, celulars, o altres xarxes que puguin tenir desconnexions.Pot funcionar amb connexions TCP en connexions no fiables ao amb UDP en canals fiables.

Seguretat

La implementació de Microsoft té vulnerabilitats conegudes. MSCHAP-v2 és vulnerable a atacs de diccionari i Microsoft mateix recomana millors sistemes per a sistemes que requereixen confidencialitat.

IPSec no té vulnerabilitat conegudes. OpenVPN no té vulnerabilitat conegudes.


PPPoE

Són les sigles de PPP sobre Ethernet (Point To Point Protocol over Ethernet).

Recursos:

PPPoA

Són les sigles de PPP sobre ATM (Point To Point Protocol over ATM).

Recursos:

PPTP

Consulteu PPTP

OpenVPN

Consulteu OpenVPN

SSTP

Consulteu SSTP

L2TP

Consulteu L2TP

Linux

Servidor. Point-to-Point Protocol daemon (PPPD)

PPPD són les inicials de Point-to-Point Protocol Daemon un dimoni que permet muntar servidors PPP en màquines Linux.

TODO

Recursos:

Client PPP. Paquets ppp

pppoeconf

Permet configurar una connexió ppp mitjançat un assistent semigràfic amb ncurses (sino teniu ncurses l'assistent serà en mode text).

$ sudo pppoeconf

Si no li indiquem cap paràmetre busca a totes les interfícies Ethernet. Li podeu restringir la cerca amb:

$ sudo pppoeconf nom_interficie

Per exemple:

$ sudo pppoeconf eth0

Utilitza l'ordre pppoe-discovery per tal de trobar peers als quals connectar.

Ordre proporcionada pel paquet del mateix nom:

$ dpkg -L pppoeconf
/.
/usr
/usr/share
/usr/share/pixmaps
/usr/share/pixmaps/pppoeconf.xpm
/usr/share/applications
/usr/share/doc
/usr/share/doc/pppoeconf
/usr/share/doc/pppoeconf/README.Debian
/usr/share/doc/pppoeconf/copyright
/usr/share/doc/pppoeconf/changelog.gz
/usr/share/menu
/usr/share/menu/pppoeconf
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/pppoeconf.8.gz
/usr/sbin
/usr/sbin/pppoeconf
/etc
/etc/ppp
/etc/ppp/ip-up.d

Vegeu un exemple concret d'ús de pppoeconf a Orange.

pon

Permet iniciar una connexió ppp:

$ pon connexio

On la connexió més habitual és:

$ pon dsl-provider 

L'ordre la proporciona:

$ dpkg -S /usr/bin/pon
ppp: /usr/bin/pon

Els paràmetres de la connexió ppp els trobeu als fitxers de la carpeta /etc/ppp/peers, per exemple el fitxer:

$ sudo cat /etc/ppp/peers/dsl-provider | grep -v '^#\|^$\|^;'
noipdefault
usepeerdns
defaultroute
replacedefaultroute
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
connect /bin/true
noauth
persist
mtu 1492
noaccomp
default-asyncmap
plugin rp-pppoe.so eth0
user "tur977502496@orangeadsl" 

Consulteu un exemple concret a Orange

El fitxer de log al arrancar una connexió és quelcom similar a:

$ sudo tail -f --lines=500 /var/log/syslog | grep ppp
May 27 21:13:50 cop pppd[23122]: Plugin rp-pppoe.so loaded.
May 27 21:13:50 cop pppd[23122]: RP-PPPoE plugin version 3.8p compiled against pppd 2.4.5
May 27 21:13:50 cop pppd[23124]: pppd 2.4.5 started by root, uid 0
May 27 21:13:50 cop pppd[23124]: PPP session is 64915
May 27 21:13:50 cop pppd[23124]: Connected to 00:09:b6:8b:66:4a via interface internet1
May 27 21:13:50 cop pppd[23124]: Using interface ppp0
May 27 21:13:50 cop pppd[23124]: Connect: ppp0 <--> internet1
May 27 21:13:52 cop pppd[23124]: PAP authentication succeeded
May 27 21:13:52 cop pppd[23124]: peer from calling number 00:09:B6:8B:66:4A authorized
May 27 21:13:52 cop pppd[23124]: not replacing existing default route via 79.148.245.193
May 27 21:13:52 cop pppd[23124]: Cannot determine ethernet address for proxy ARP
May 27 21:13:52 cop pppd[23124]: local  IP address 83.40.223.5
May 27 21:13:52 cop pppd[23124]: remote IP address 192.168.153.1
May 27 21:13:52 cop pppd[23124]: primary   DNS address 80.58.61.250
May 27 21:13:52 cop pppd[23124]: secondary DNS address 80.58.61.254

Fixeu-vos que si ja teniu un default gateway per defecte no us el canviarà:

May 27 21:13:52 cop pppd[23124]: not replacing existing default route via 79.148.245.193

Les rutes que et configura són:

$ sudo route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.153.1   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
...
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0

Ho pots comprovar amb traceroute

$ traceroute www.upc.edu
traceroute to www.upc.edu (147.83.2.135), 30 hops max, 60 byte packets
 1  192.168.153.1 (192.168.153.1)  29.924 ms  31.295 ms  33.314 ms
 2  113.Red-81-46-52.staticIP.rima-tde.net (81.46.52.113)  35.469 ms  37.159 ms  38.628 ms
 3  rediris-1.espanix.net (193.149.1.26)  52.606 ms  54.137 ms  55.515 ms
 4  NAC.XE1-0-0.EB-Barcelona0.red.rediris.es (130.206.250.26)  71.708 ms  73.454 ms  74.865 ms
 5  cesca-router.rediris.es (130.206.202.30)  246.379 ms  246.590 ms  246.611 ms
 6  upc-anella.cesca.cat (84.88.18.18)  81.398 ms  57.218 ms  58.578 ms
 7  * * *
 8  * * *
 9  * * *
10  cerberuso1.upc.es (147.83.172.180)  71.716 ms  57.634 ms  59.327 ms
11  * * *
12  * * *
...
$ sudo ip route show
192.168.153.1 dev ppp0  proto kernel  scope link  src 79.159.167.136 
...
10.0.0.0/8 via 192.168.0.46 dev intranet 
default dev ppp0  scope link

poff

Desconnecta una connexió ppp:

$ sudo poff dsl-provider

L'ordre es proporcionada per:

$ dpkg -S /usr/bin/poff
ppp: /usr/bin/poff

Consulteu pon i un exemple complet a Orange.

EL log al tancar una connexió és quelcom similar a:

$ sudo tail -f --lines=500 /var/log/syslog | grep ppp
May 27 21:10:14 cop pppd[12672]: Terminating on signal 15
May 27 21:10:14 cop pppd[12672]: Connect time 13.5 minutes.
May 27 21:10:14 cop pppd[12672]: Sent 0 bytes, received 872 bytes.
May 27 21:10:14 cop pppd[16418]: Terminating on signal 15
May 27 21:10:14 cop pppd[16418]: Exit.
May 27 21:10:14 cop pppd[12672]: Connection terminated.
May 27 21:10:14 cop pppd[12672]: Exit.

pppoe-discovery

Permet descobrir peers als quals connectar-se. Aquesta ordre l'utilitza per exemple pppoeconf per configurar una connexió ppp.

Vegem un exemple:

$ sudo pppoe-discovery 
Access-Concentrator: rasresvr1-02
Got a cookie: 0e c9 ad 8c 05 da ec 78 89 78 1a cc fb 83 e4 21
--------------------------------------------------
AC-Ethernet-Address: 00:12:da:e9:35:48 

En aquest cas en trobat un concentrador ADSL anomenat rasresvr1-02 amb la MAC 00:12:da:e9:35:48.

Es pot especificar la interfície de xarxa amb:

$ sudo pppoe-discovery -I eth4

{{nota| Sembla ser que dona un error "No such device" si les interfícies de xarxa tenen noms no habituals (com ethx). És a dir si canvieu els noms de les targetes de xarxa /etc/udev/rules.d/70-persistent-net.rules tindreu problemes

NOTA: Un cop configurat pppoe per exemple amb pppoeconf, es possible que el discovery ja no us torni a contestar. Cal apagar el router ADSL i tornar-lo encendre o connectar-se via Telnet i resetejar la línia ADSL o més fàcil, alliberar la línia: $ sudo poff dsl-provider

El que fa aquesta ordre es enviar els paquets PPPoE PADI i PADO. Observeu el resultats de l'ordre tcpdump si l'executeu durant l'execució de pppoe-discovery:

$ sudo tcpcump -i eth0
09:02:57.614685 PPPoE PADI [Service-Name]
09:02:57.655403 PPPoE PADO [Service-Name] [AC-Name "rasresvr1-02"] [AC-Cookie 0x0EC9AD8C05DAEC7889781ACCFB83E421]

On:

L'ordre la proporciona el paquet ppp:

$ whereis pppoe-discovery
pppoe-discovery: /usr/sbin/pppoe-discovery /usr/share/man/man8/pppoe-discovery.8.gz
$ dpkg -S /usr/sbin/pppoe-discovery 
ppp: /usr/sbin/pppoe-discovery

Consulteu un exemple complet a Orange.

plog

Permet consultar el log de pppd. El que fa es buscar les últimes línies [[pppd]] al fitxer de log /var/log/syslog:

$ tail -f --lines=500 /var/log/syslog | grep ppp

NOTA: No funciona gaire bé si hi ha altres processos escrivint a syslog

Altres sistemes

IPCOP

IPCOP té un menú (DIALUP) per configurar modems USB o serial connectats directament a IPCOP. Aquest tipus de modems no són els més aconsellables (és millor tenir un router i connectar IPCOP directament al router amb un connexió Ethernet per la xarxa vermella) però si és l'únic que tenim IPCOp pot ser una solució per compartir de forma segura la connexió a Internet.

Fitxer:IPCOP WANPPP2.jpg Imatge:IPCOP WANPPP1.jpg

Windows

Dispositius ADSL

Vegeu també ADSL Monolloc i ADSL.

Multilink PPP

TODO aka MP, Multi-Link PPP, MultiPPP o MLPPP.

RFC 1990


Multi-Link Point to Point Protocol (MP, Multi-Link PPP, MultiPPP or MLPPP) is a method of splitting, recombining, and sequencing data across multiple logical data links.

In a situation where we have multiple DSL links a pair of devices, performance by “widening the pipe” between two devices can be increased by using Multi-Link PPP, without going to a newer, more expensive technology.

Large packets are actually split into bits and sent evenly over ALL logical data links. This is done instantaneously with NO loss of bandwidth. It is important to understand that other end of the link needs to use the same protocol to recombine your data.

Multilink is based on an LCP option negotiation that allows to indicate to its peer that it is capable of combining multiple physical links.

Multilink PPP (MP) es suportat pel protocol L2TP per tal de proveir MRRU i també suportat [[[bridging]] en enllaços PPP. ( utilitzant Bridge Control Protocol (BCP) que permet enviar frames Ethernet tal qual a través de enllaços PPP).

D'aquesta forma és possible disposar d'una alternativa a EoIP. Cal tenir en compte que el bridge haurà de tenir una Adreça MAC d'administració o una interfície Ethernet en el bridge ja que els enllaços PPP no tenen adreces MAC.

Recursos:

Vegeu també

Enllaços externs