Jul 05

A history of connectivity in Torrelavit: from 1.200bps using packet radio to 1Gbps on fiber optics

Reading time: 5 – 8 minutes

This is a chronology of my history using the Internet, and no-Internet, connections. I never thought this is going to be possible; currently, my Internet connection is faster than my local network. The best speed test that I’ve got so far is the one that you have in the attached screenshot using an old Dell Studio XPS with Linux Mint. The paradox is that more modern computers get worst performance than this one and all of them synchronize the network card to 1Gbps with the Mikrotik CloudSwitch which acts like a gateway applying NAT rules before the fiber optic bridge.

By the way, that news at home makes me spend some time remembering all the Internet connections I had at home since 1992. During Barcelona Olimpic games I was on Netherland with a holidays family trip in that trip we met a guy who told me how to connect two computers using a ham radio station, this technique is called packet radio. I was 15 and my life changed at that instant. The idea was using a radio station of 145MHz, or 433MHz (there were more frequencies but they are unusual) connect the speaker and mic of the radio station using an audio jack to a TNC (Terminal Node Control), or a Baycom, which are at the end of the day like a modem that converts analog audio signals to digital serial port signals. Using the serial port connected to the computer a terminal application was run for user interfacing with the network. Protocol used for the WAN network was AX.25 a variant of X.25, used in the past on most ATM networks, the packet radio network had not only client stations, also BBS (Bulletin Board Systems), Weather Stations, email, FTP, nodes (repeaters), and gateways to other WAN networks like Fidonet, and Internet. How to get those resources without a searcher like Google, it’s another story.

Exchange data was a nightmare, because communication was at a bandwidth of 1.200bps on a shared media, the air, using a simplex (half-duplex)  communication. In plain words, this means to send a 10KB pictures could take an afternoon and usually, terminals weren’t multi-task so you had the computer busy doing that all the time. The first time that I run a browser was for Gopher service which inspired Web service at some point, I had two use two computers one of them running as TCP/IP to AX.25 gateway and the other with Windows 3.1 running Mosaic and using IP over parallel port (PLIP) for exchanging data with those two computers. Mosaic was the first graphical browser of the story as far as I know. Finally, I remember that I developed a small implementation of TCP/IP stack over AX.25 on an EPROM for a TNC, it was very basic but good enough for mapping ham radio IDs and TCP/IP addresses. BTW, my ham radio ID was EB3EWH.

This part of the story lasted about 5 years, I remember the late 90s when good enough plain old telephone line (POTS) was installed at home and a super modern 9600bps telephonic modem which evolved very fast to different speeds up to 56K was the only option for connecting to the Internet. We used Infovía and Infovía plus a Telefonica service for getting data network instead of regular calls to the ISPs, really painful part of the story. Slow speeds also and really expensive services for what we get. Maybe the most fun thing about this part of the history was when someone at home pick up the phone and data connection was interrupted. Other roughly 5 years with this connectivity pattern.

In the early 2000s, I installed an ISDN line at home with two 64kbps at home, on those was permanently connected to the Internet and the other one was available for voice calls. ISDN was a really interesting and very stable technology I’m out of the market currently but I think it’s still possible to buy links using so old technology.  This part of the history was shorter than the previous ones and the funniest story was a thunderstorm and lighting day when the TR1 exploited in front of me I scared a lot.

At the end of 2002 a 256Kbps ADSL was installed on top of a new POTS line installed again at home. It was like a dream, finally, I was navigating with broad bandwidth. ADSL speed up to 2Mbps it was impossible to improve the speed to higher speeds than that because I’m too far from any ADSL distribution point. I remember in 2012 I was paying for 6Mbps internet connection which was the smallest possible to hire and my maximum speed was 1.9Mbps measured with the proper equipment for quality lines test. 

In the end of 2013 I installed a WiFi link with a guy who re-sell fiber optics connection in Sant Sadurní d’Anoia using a link to the Ordal which is a mountain that I can view from home, about 10km link using 5GHz frequency. Speed was 6Mbps/300kbps. This link was active until two days ago, but since August of 2014 the main Internet connection was using another WiFi link with a company called XTA (Xarxa de Telecomunicacions Alternatives), a.k.a. WifiPenedes which is part of the Guifi.net project. This is the same company which installed fiber optics at home the day before yesterday at home. The WiFi link that I had with WifiPenedes was 20Mbps/1Mbps and currently, with the fiber optics I have 1Gbps/300Mbps and there is no backup link with any other technology. BTW, I have a 4G subscription which can be used for emergencies.

Of course will be nice to go deeper with each of those points, finding anecdotes I lived with those 26 years of history connecting to wide area networks (WAN) maybe one day I’ll find the priority for sharing so amazing moments and people that I met thanks to those networks. If I have to admit that networking changed my life and I have had access to a broad knowledge thanks to that. Thank everyone and every company which makes this possible, it has been a pleasure to enjoy this fantastic processes. I finish accepting the challenge to improve my LAN for getting the best from my new Internet connection.

Aug 08

Com funciona la VoIP: protocols, codecs i altres

Reading time: 10 – 16 minutes

Aquí teniu la continuació que us vaig prometre de les bases de la VoIP. Aquest article intentaré fer-lo tan entenedor com l’anterior però no serà senzill perquè els temes ha parlar són ja força tècnics i especialitzats. Malgrat això és molt necessari tenir-los clars sinó quan toquem sistemes de VoIP reals no sabrem a que es refereixen els manuals o els altres companys quan ens expliquen els motius pels que passen les coses. O simplement, perquè fan falta certs dispositius en les configuracions.

Altre cop he de fer referència a Network System Design Line, aquest cop a l’article How VoIP works: Protocols, codecs, and more (local).

Resumint les idees bàsiques

En l’article de les bases de la VoIP va quedar molt clar el procés que segueix una trucada de VoIP. També es va insinuar la importància del temps que es triga en mostrejar les ones analògiques de la veu (digitalitzar la veu) i l’espai que ocupa aquesta digitalització. Això repercutirà de forma directa en el temps que triguem en transportar aquesta informació fins a l’altre extrem on es farà el procés invers fins que l’interlocutor senti la nostre veu.

Bé doncs, en aquest document em centraré en explicar que es fa després de digitalitzar la veu, o sigui, es comprimeix aquesta informació abans de ser transportada perquè ocupi menys espai (això ho fan els codecs). Per altre banda, cal que pensem que quan enviem un email o una fotografia a través d’una xarxa IP aquesta informació no és sensible al temps. O sigui, ens és igual que trigui uns segons més o menys en arribar això no afecta en el missatge que es transporta. Obviament en una conversa això no és així i aquests paquets han d’arribar prou ràpid a l’altre extrem perquè la sensació de “temps real” sigui suficient.

Les xarxes IP, per defecte, són xarxes de tipus best-effort això vol dir que tots els paquets que viatgen a través d’elles intenten passar el més ràpid possible però sense cap tipus d’arbitratge. Parlant en plata, la llei del més fort. Per tant, es tracta inicialment d’un entorn poc indicat per transportar informació sensible al temps. Per exemple, informació en temps real (o streaming) d’audio i/o video.

Per tal d’adequar millor aquest medi a les comunicacions sensibles al temps s’usen tècniques de QoS. O sigui, intentem montar un sistema d’arbitratge en els nodes de la xarxa per tal de prioritzar el tràfic sensible al temps. Per exemple, el tràfic de VoIP. Si la xarxa en la que s’ha de treballar no té gaire càrrega de tràfic això no és massa important. Cal tenir present que internet no és una xarxa amb QoS. Per tant, és un entorn hostil per les nostres trucades de VoIP.

Entrant una mica en temes tècnics, el que hem d’aconseguir pel que fa als retards (delay) de la xarxa entre els dos extrems són temps inferiors a 100ms. Tot i que amb retards per paquet de 100 a 200ms poden arribar a passar trucades ja es poden començar a donar fenomens molestos pels interlocutors. Sovint problemes d’echo.

Problemes típics d’una xarxa IP

Quins són els problemes que hem d’intentar evitar que tingui una xarxa IP per poder-hi passar VoIP sobre d’ella:

  • Delay el retard, temps que triguen els paquets a viatjar del punt inicial al final. Els retards massa alts acostumen a provocar problemes d’echo acustic.
  • Packet loss perdua de paquets, sobretot es dona en les xarxes WAN, si els paquets han de viatjar a través de molts punts (gateways) es podrien perdre. Perdent doncs informació del missatge que es transporta.
  • Jitter canvis sobtats i no desitjats en el temps que triguen els paquets en arribar, això pot provar desordre. Per solucionar-ho sovint s’usen buffers i paquets petits, amb poca informació.
  • Echo els paquets arriben més d’una vegada per diferents camins. No és el mateix que l’echo acustic.

Resum de passos que segueix la veu fins arribar a l’altre extrem

En el següent gràfic podem veure quins són tots els passos, un per un, que segueix la nostre veu fins arribar a l’interl·locutor. Com podem veure cada un dels passos té una serie de codecs, protocols i normes associades que a continuació es descriuen.


Com ja s’ha comentat el primer que es fa després de mostrejar la veu (digitalitzar) es codifica i comprimeix per tal de reduir els requeriments d’amplada de banda. Aquest procés el porten a terme els codecs.

Els paquets de dades comprimits es mouen a través de les xarxes gràcies a un protocol de transport. Els gateways s’encarreguen d’enrutar aquests paquets entre diferents xarxes IP (o d’altres tipus, si cal) fins que els paquets arriben al seu destí. Quan arriba al destí es decodifiquen (i descomprimeixen) els paquets rebuts i es converteixen altre cop en audio.

VoIP en el model OSI

El model de 7 capes OSI defineix qualsevol procés de networking (interconnexió digital en una xarxa). Si hi ha dos extrems que volen tenir una sessió de comunicació, les dades que aquests generen comença a la capa 7, patint les encapsulacions necessaries fins arribar a al medi de transmissió (per on viatgen les dades: cable, aire, llum, etc) a l’altre extrem passa el procés invers des del medi fins a l’usuari. Bé doncs això és el que ens mostra el següent gràfic i ens col·loca cada un dels protocols en una de les capes.


Session control: H.323 vs. SIP

El primer que ens cal per establir una comunicació en VoIP és un protocol de sessió que ens indiqui com informem a la xarxa que existim, com intentem comunicar-nos amb altres usuaris o com rebem les comunicacions d’altres usuaris. Els dos protocols més coneguts que s’encarreguen d’això són H.323 i SIP. Malgrat n’hi ha molts d’altres com ara IAX (protocol usat per Asterisk).

International Telecommunication Union (ITU) H.323

L’H.323 és un estàndard de la ITU originariament desenvolupat per enviar veu i dades en temps real (videoconferencia i similars). Malgrat això una de les primeres aplicacions que va tenir va ser la VoIP. De fet, el H.323 més que un protocol és en si és un grup de d’estàndards, codecs i protocols que diuen com establir una comunicació multimedia a través d’una xarxa IP. Per exemple, el protocol de senyalització que usa H.323 és el H.225 i el protocol de negociació de funcionalitats el H.245.

Session Initiation Protocol (SIP)

El SIP el va definir la IETF a l’RFC 3261. Es va desenvolupar especialment per la telefonia IP. De fet, es considera una solució molt més neta i senzilla que l’H.323. SIP s’usa amb SDP per tal de descobrir usuaris; a més ofereix la capacitat de descobrir funcionalitats i de gestionar trucades. SDP és esencialment un format que descriu com fixar els paràmetres d’inicialització per tal d’intercanviar la informació multimèdia. Bàsicament SIP/SDP és analoga a H.225/H.245 en el protocol H.323.

El protocol SIP ens permet a més establir connexions entre dos extrems sense la necessitat de disposar d’un servidor. Tot i que no és l’habitual. Ja que normalment el que fan els clients SIP és registrar-se contra un servidor públic per tal de mostrar-se a la resta de clients de la xarxa.

Transport layer protocols

Els protocols de senyalització descrits anteriorment són els responsables d’establir les configuracions a usar en una sessió multimèdia entre dos usuaris. Però aquesta informació de senyalització viatjarà per la xarxa a través dels protocols de transport de sempre, o sigui, UDP (no orientat a connexió) i/o TCP (orientat a connexió).

Transportant la conversa: RTP

El protocol RTP ofereix un servei d’entrega de paquets amb informació d’audio i video que ha de ser servida en temps real. Aquest protocol usa com a protocol de transport el UDP per minimitzar la capçalarela (la capçalera UDP és molt més petita que TCP). A canvi d’això no pot garantir l’entrega dels paquets que transporta (UDP no és orientat a connexió, no hi ha retransmissió de paquets perduts), a més tampoc pot garantir que l’ordre en que entrega els paquets sigui el correcte.

Estructura d’un paquet RTP:


Així doncs el que intenta fer RTP és afegir aquelles funcionalitats que no li dona UDP per tal de que les dades que transporta siguin el màxim útils possible. Les funcionalitats que dona RTP a UDP són: nivell de QoS, marques de temps (timestamps), números de seqüència i confirmació de recepció per cada paquet enviat. També pot suportar esquemes de correcció d’errors per fer més rebustes les dades que transporta, fins hi tot algunes opcions de xifrat bàsiques per les dades del paquet.

Obviament això carrega una mica el paquet UDP, en aquest gràfic podem veure una comparació amb el preu que paguem per obtenir totes aquestes funcionalitats.


RTP Control Protocol (RTCP)

RTCP és un protocol complementari a RTP i s’usa per enviar informació de control, com a ara el número de paquets perduts, jitter, retard, etc. És molt útil per saber quina és la qualitat de la sessió que estem mantenint. Gràcies a la informació d’aquest protocol podem saber la necessitat que té la nostre xarxa de que li donem suport de QoS. O la necessitat de canviar els codecs que estem usant per ajustar-nos millor a les necessitats de la xarxa en la que treballem.


A dalt de tot de la pila VoIP hi trobem els protocols encarregats de comprimir la informació que s’ha mostrejat de la font de digitalització (la nostre veu, imatges de video, etc). Els factors que determinen la eficència d’una codec són: el nivell de compresió (quan més comprimeixi millor), temps compresió i descompresió (quan menys trigui en fer el procés millor), suport a la perdua de paquets (capacitat de reproduir la informació original sense tenir tots els paquets en el destí), correcció d’errors, cost intel·lectual (cal pensar que no tots els codecs són lliures, n’hi ha molts de pagament).

Codecs d’audio:

  • G.711 (any 1988) estàndard internacional per la codificació de converses telefóniques. Usa 64kbps d’amplada de banda per cada conversa.
  • G.723.1 (any 1996) usa de 5.3 a 6.3kbps d’amplada de banda. És capaç de detectar la no activitat de la veu, per tal de consumir menys amplada de banda i també és capaç de generar soroll de confort (soroll necessari per saber que la trucada esta en curs i que no hi ha problemes a la línia). És força bo suportant perdua de paquets i en corregir errors de bits erronis. La família d’estàndards internacional per transportar video H.324 estableix aquest protocol d’audio com a estàndard per l’audio.
  • G.729 (any 1996) usa uns 8kbps d’amplada de banda, però també pot treballar amb 6.4kbps o 11.8kbps. Suporta detecció d’activitat de la veu i generació de soroll de confort.
  • GSM codecs de veu coneguts gràcies a la telefonia mòbil, definits per l’ETSI. L’amplada de banda que usen per treballar és d’uns 13kbps.
  • Speex és OpenSource i el varem desenvolupar a xiph.org. Capaç de treballar amb mostres de 8, 16 i 32kHz. Capaç de treballar amb amplades de banda de 2kpbs fins a 44kbps. A més és resistent als erros de la xarxa, suporta detecció d’activitat de la veu. A més també suporta variable-bit-rates, o sigui, pot adaptar el mostreix segons la complexitat dels sons a enviar, fins hi tot és capaç de soportar codificació en estereo.

Per acabar…

Amb aquest document ja em fet un repas a grans trets dels elements que composen una comunicació de VoIP. Quan ens diposem a configurar un sistema de VoIP trobarem moltes altres sigles, codecs, protocols, etc. però aquest document ens serveix com una referència bàsica sobre la que començar a treballar mentre anem adquirint experiència en aquest món tan interessant.

Aug 07

Bases de la VoIP

Reading time: 8 – 12 minutes

Des de fa un parell d’anys s’ha posat molt de moda parlar de Veu sobre IP (VoIP) però sovint comencem la casa per la taulada i de vegades val la pena tenir una referència on acudir per consultar com funciona tot plegat des de sota, així doncs amb aquest article espero poder explicar una mica que hi ha darrera d’aquest màgia. Després d’aquest article en tinc un altre preparat que és molt més aplicat i específic no tan teòric, parlant més a fons dels aspectes tècnics de la VoIP.

Com ja comença a ser habitual per escriure articles d’aquest tipus m’inspiro en articles escrits a Network Systems Design Line, concretament m’he inspirat en Voice over IP (VoIP)–The basics (local).

Quan parlem de VoIP ens referima un conjunt de serveis que pretenen oferir un servei telefonic tan a usuaris residencials com a empreses. A més la VoIP la usen els proveedors de serveis per transportar trucades entre ells. A més les empreses tan petites com grans la poden usar per comunicar les seves oficines. A més la VoIP es pot usar com a substitut o complement a la telefonia convencional.

Sovint les operadores telefóniques usen serveis de VoIP de forma transparent pels usuaris per tal de connectar les trucades entre usuaris. Així poden reaprofitar les seves infraestructures tan per transportar veu com dades simultaneament. La principal diferència entre els serveis tradicionals de telèfon i la VoIP és que el primer es basa en la conmutació de circuits i el segon en la conmutació de paquets. Així doncs quan connectem dues trucades de veu convencionals en el fons el que estem fent és connectar un cable d’un extrem de la trucada a l’altre. Això implica tenir els recursos de la xarxa reservats durant el temps que dura la trucada. Per tant, es fa un ús molt ineficient de l’amplada de banda disponible en aquest cable/circuit que esta connectat durant tot el temps de la trucada de forma permanent. Aquest problema es soluciona en la conmutació de paquets ja que es multiplexen les trucades en el temps i un mateix circuit pot transportar més d’una trucada de forma simultanea.


Arribats en aquest punt ja tenim clar que l’ús de les xarxes de conmutació de paquets són més eficients si la densistat de trucades a transportar de forma simultanea augmenta. Perquè ens fem una idea les fibres òptiques transosceaniques poden transportar més de 100 milions de trucades cada una.

Components bàsics d’un servei telefónic

Bàsicament per tal de poder posar en funcionament un servei de telèfon fan falta els següents 4 components:

  • Senyalització es refereix a la comunicació entre el telèfon i el servei telefónic. Informa de que hem despenjat/penjat el telèfon, quin número hem marcat, que ens esta entrant una trucada, etc.
  • Conversa la veu que es transmet a través de la xarxa.
  • Funcionalitats trucada en espera, desviament de trucades, bústia de veu, etc.
  • Alimentació com enviem l’eletricitat al telèfon perquè funcioni. En els serveis telfónics convencionals aquesta alimentació l’ofereix la pròpia línea.

Senyalització en la VoIP

La senyalització es refereix bàsicament a com el telèfon es comunica amb la central telefónica. Però els conmutadors de xarxa intermitjos també han de reenviar-se aquestes senyals de control fins a arribar al teléfon de l’usuari. Així doncs cal entendre alguns tipus de senyalitzacions bàsiques.

Com un teléfon sap que volem fer una trucada? en el següent gràfic podem veure un esquema del procés. Quan despengem el telèfon, la central telefónica ens envia el to. Llavors marquem el número amb el que volem parlar, quan això passa s’intercanvien una serie de freqüències (o pulsos) entre el nostre teléfon i la centra telefónica per tal de comunicar a aquesta quin és el teléfon amb el que volem marcar. Llavors la central determina la ruta de la trucada que volem fer i notifica al destí que volem parlar amb ell, o sigui, es posa a sonar el teléfon destí.


Fixeu-vos que en aquests senzills passos i que tots tenim tan clar ja hi ha una bona colla de senyalitzacions que han viatjat per la línia i encara no em començat la conversa. De tota aquesta idea hi ha un detall important, la part del sistema telefónic que hi ha dins de casa nostre no ha canviat des de fa 20 o 30 anys. Així tots els canvis s’han fet a la xarxa i de forma completament transparent pels usuaris.

Si un dels extrems de la trucada uses VoIP l’esquema podria quedar, per exemple, així:


En aquest cas, el terminal telefónic esta connectata a un adaptador que el connecta a internet. Aquest adaptador actua com a traductor, converteix la nostre veu en paquets de tipus IP que s’envien a través d’internet. En aquest cas la senyalització és igual que en cas anterior, però l’adaptador es dedica a traduir les senyals analògiques en paquets que viatgen a través d’IP. Després el nostre proveedor de servei de VoIP convertirà aquests paquets en senyals altre cop compatibles amb la xarxa de teléfon convencional. Perquè el destí pugui entendre la trucada. Tot això serà completament transparent pels usuaris que no han de notar cap diferència.

Finalment si ens imaginem la senyalització entre dues trucades de VoIP, l’esquema quedaria així:


El primer que salta a la vista és que ja no ens cal al xarxat telefónica convencional. Així doncs la senyalització digital que genera un extrem pot viatjar a través de la xarxa IP fins arribar al destí. Així doncs acabem de convertir el sistema de teléfon convencional en un sistema de dades IP completament. On no ens calen altre elements que els ja coneguts per les nostres xarxes de dades.

Com ho fa la VoIP per transportar una conversa

La veu humana esta composta per ones de so analògiques. Els sistemes de teléfon tradicionals transporten la veu com una successió de canvis de voltatge a través d’un parell de cables (s’anomenen senyals portadores). Quan aquestes senyals arriben a l’altre extrem el que fan és amplificar-se a través d’un altaveu, això produeix un so molt semblant al so original. En els sistemes de telefonia digitals (inclosa la VoIP), no tenim un circuit dedicat a transferir la veu. La veu humana es converteix en un fluxe digital (o series de 1s i 0s) que arriba fins al destinari on s’intenta re-generar els sons que van ser emesos per l’emisor. La converció analogic-digital de l’origen s’anomena mostreix (sampling), bàsicament es tracta de prendre una serie de mesures sobre els freqüències emeses per la veu a intervals de temps fixes. Després el que es fa és transportar aquestes mesures i no pas les freqüències emeses per la veu.


Esquema dels processos de mostreix de la veu:


La gràcia perquè la senyal origen s’assembli al màxim possible amb la de destí esta en prendre el màxim número de mesures possible. Però cal pensar que quantes més mesures es prenguin més mesures s’hauran d’enviar i més ràpida haurà de ser la línia de dades. Així doncs cal buscar un compromís entre la qualitat de mostres preses i l’espai que ocupen, per poder-les enviar prou ràpid.

Perquè tinguem quatre dades reals la freqüència més baixa que emet la veu humana és d’uns 100Hz i la més alta de 1700Hz. Entre els sorolls i les freqüències harmoniques que emetem més o menys necessitem uns 4000Hz com a molt agut. S’agafen unes 8000 mostres cada segon, o sigui, la freqüència de mostreix és d’uns 8KHz. Aquestes unitats de mesura capturades es posen dins dels paquets i s’envien cap al destinari on es generen les freqüències segons les dades que indiquen les mesures rebudes.

Alimentant les xarxes de VoIP

En les xarxes telefóniques convencionals com he dit l’alimentació electrica del teléfon s’agafa de la línia així doncs no ens hem de preocupar d’endollar el teléfon a la xarxa eléctrica de casa. Això que sembla una tonteria permet, per exemple, fer trucades telefóniques quan s’envà la llum. En un sistema digital això seria un greu problema perquè la línia no transporta l’alimentació del terminal telefónic.


Per tant, quan marxa la llum amb un sistema digital no podem fer trucades si s’envà la llum. Això suposa un gran problema ja que en cas d’emergència no ens podem comunicar. Així doncs, cal que pensem en algún sistema d’alimentació alternatiu per quan en cas d’emergència haguem d’usar el teléfon o quedarem aïllats.


Escencialment la forma de trucar no ha canviat per l’usuari. Però si que els processos tècnics que composen el procés de fer una trucada han canviat moltíssim internament i tecnològicament ja no té res que veure un sistema de telefonia convencional amb els nous sistemes de telefonia de VoIP. Així doncs el que abans era un problema pels enginyers de telecomunicacions, ara és un problema pels enginyers de xarxes.

Dec 17

grabant converses telefóniques

Reading time: < 1 minute

Tornat al vell sistema telefònic (PSTN, POTS, RTB, RTC, etc) només volia adjuntar un document en format .pdf que explica com montar-nos un sistema molt senzill per grabar les converses telefóniques del nostre telèfon de tota la vida. Obviament aquest problema amb la VoIP és infinitament més senzill de solucionar. Però com que m’han preguntat tantes vegades com fer això he pensat que aquest document podia ser molt útil.