DML Decentralized Media Linking

Alles over de diverse digitale modi.
Bericht
Auteur
pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

DML Decentralized Media Linking

#1 Bericht door pe1rxq »

Zo'n twaalf jaar terug heb ik eens wat zitten experimenteren met een decentraal opgezet netwerk om repeaters te linken.
Voor wie wat historie wil lezen staat het nog op stees op http://sharon.pi8zaa.ampr.org/users/pe1rxq/drl/drl.html
Toen is het niet veel verder gekomen dan een paar zelfbouw test opstellingen.

De belangrijkste ideen achter het netwerk waren:
- Data stromen niet meer dan 1 keer over een link versturen ook als er meerdere luisteraars zijn
- Gedecentralizeerde opzet, geen enkele node is onmisbaar.
- Dynamisch routering tussen de nodes.
- Geschikt voor elk soort data (spraak, video)

In de loop van de jaren heb ik diverse keren wat zitten experimenteren om het door te ontwikkelen, maar nu ben ik er eens echt aan toe gekomen.
Inmiddels heb ik ook wat nieuwe eisen voor het netwerk:
- Het moet gebruikt kunnen worden door verschillende personen met verschillende rechten. (b.v. Full vs Novice of helemaal geen licentie)
- Geen enkele persoon is onmisbaar
- Elke data stroom kan geverifieerd worden.
Om aan te geven dat de data stromen niet noodzakelijk een radio tegenkomen op hun pad, heb ik de naam ook veranderd in DML wat staat voor Decentralized Media Linking

De laatste paar lijken redelijk onverenigbaar, maar met cryptografie zijn ze vrij makkelijk te realiseren.
Alle data wordt namelijk voorzien van een elliptic curve handtekening gemaakt met een 256 bit sleutel.
Hierdoor weet je zeker dat de data van dezelfde persoon afkomstig is.
De verschillende rechten kun je vervolgens regelen met certificaten.
Er kunnen verschillende certificate authorities opgezet worden die bijvoorbeeld alleen een certificaat afgeven als ze zeker weten dat je een full license hebt. Een vergelijkbare authority kan certificaten afgeven als je een novice license hebt.
De beheerder van een repeater kan dan kiezen welke certificaat authoriteiten hij erkend en toelaat.
En aangezien iedereen een certificaat authoriteit op kan zetten (je zult alleen erkenning moeten krijgen) is aan alle eisen voldaan.

Aangezien ik elke soort data wil kunnen versturen ben ik eerst maar eens begonnen met een formaat waar je voor een spraak repeater niet direct wat aan hebt: een Ogg stream met Theora (video) en Vorbis (audio) data. (Dat je er niet direct wat aan hebt is ook niet helemaal waar, met dit formaat zou je prima ATV repeaters aan elkaar kunnen linken).
Daarna ben ik door gegaan de Codec2 vocoder. (Voor wie zich nu afvraagt of AMBE niet ook had gekunt: Ja hoor, zou prima kunnen, maar ik blijf er persoonlijk liever uit de buurt).
Een eerste set simpele repeaters en reflector heb ik inmiddels werkend. De repeater software kan bedient worden via een seriele poort of gewoon met een terminal:
- getallen, hekje, sterretje voor het opbouwen/afbreken van een link.
- karakters 127 en 128 voor het doorgeven van de PTT en squelch status.
- Indien een terminal gebruikt wordt kan de status getoggled worden met Enter.

Voor wie geintereseerd is staat hier de huidige stand van zaken in een Git archief: http://video.vreeken.net/~pe1rxq/dml.git/
(Momenteel zal alleen linux werken aangezien ik alsa gebruik voor geluid opnemen/afspelen)

De volgende stappen wordt het debuggen van de huidige software (zitten vast nog veel fouten in) en wat experimenteren met een VHF/UHF packet systeem wat tegelijk generiek blijft (ethernet achtig) maar wel goed geschikt is voor audio met lage latency.

Gebruikersavatar
elsinga
Moderator
Berichten: 3119
Lid geworden op: 17 mar 2008, 15:05
Roepletters: PC5E
Locatie: Heerenveen (JO22xx)
Contacteer:

Re: DML Decentralized Media Linking

#2 Bericht door elsinga »

Klinkt interessant! Zou het erg leuk vinden als je ons hier op de hoogte zou houden van de voortgang.
www.PC5E.nl, Robert Elsinga, communicatie enthousiasteling, zendamateur (PC5E/WC5E/SP20EJ), scannerluisteraar, lokaal/regionaal/nationaal/internationaal scout, IT Security Expert
Icom IC7300, Icom IC-7000, X50N (14m asl), Diamond WD330S (sloper, 6-12m asl), Kenwood TH-F7E, 2x Anytone AT-D578UV (base, mobile), 3x Anytone AT-D878UV, MMVDM duplex hotspot, 20x Baofeng BF888S.
Op mijn site o.a. Examenuitwerking N/F, Scannerfrequenties NL e.o, Beginnen met DMR, DMR codeplug maken

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#3 Bericht door pe1rxq »

Sinds deze week is de repeater software ook geschikt voor het werken met packet.
In plaats van sound in/uit kan er ook een netwerk device gebruikt worden.
Aangezien AX.25 niet echt geschikt is voor digitale spraak ben ik met wat nieuws begonnen. Hoewel digitale spraak belangrijk is wil ik voornamelijk een protocol hebben dat generiek is. Mijn keuze voor een codec zal zeker niet de beste of de laatse zijn, en andere data stromen moeten net zo makkelijk gebruikt kunnen worden. (aprs achtig protocol, text berichten, IP).

Voor addressering maak ik daarom gebruik van standaard ethernet headers. Een ethernet address is 48 bit en daar kun je een callsign van 8 karakters in coderen: 26 letters, 10 cijfers en een nul symbool levert 37 geldige karakters op. Karakter n vermenigvuldig je met 37^n en je telt alle acht bij elkaar op.
Dan krijg je een getal van maximaal 46 bit. Een ethernet address heeft vervolgens nog een multicast bit en een localy administered bit (staat natuurlijk op 1) en samen is dat 48.
In het datastream formaat wat ik over het DML netwerk gebruik voor codec2 wordt behalve de codec data ook de callsign van de verzender meegestuurd in hetzelfde formaat. Bij een spraak repeater zal dit simpelweg de callsign van de repeater zelf zijn, maar bij een digitale voice repeater/hotspot kan de callsign van de werkelijke verzender doorgegeven worden.

Voor het versturen van codec2 data van 3200bps gebruik ik ethernet type 0x7300. Een hoger protocol zoals IP/UDP heeft hier weinig zin en levert alleen maar meer headers op.
20ms codec2 data levert nu dus een pakket op van 14 bytes header gevolgd door 8 bytes data.

Door het gebruik van een ethernet device onstaat ook meteen een mooie scheiding tussen de DML software en het werkelijke modem. Hierdoor kunnen beide goed onafhankelijk gehouden worden. En ook makkelijk uitgewisseld: momenteel draai ik testjes op mijn huis wlan in plaats van de amateur banden.

De volgende stap is om van die 14 bytes header af te komen.

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#4 Bericht door pe1rxq »

Met een 14 byte header kun je ongelofelijk veel verschillende data stromen en typen data langs elkaar over hetzelfde medium sturen.
Maar op een typische hotspot zal het aantal gebruikers wat tegelijk bezig is relatief klein zijn.
Daardoor kun je flink bezuinigen op de header.

De data van elk ethernet pakket wordt opgehakt in stukken van 8 bytes. Deze 8 bytes worden voorzien van een 2 byte header.
Deze twee bytes bevatten een 7 bit channel nummer, 1 'continue' bit en een 8 bit offset.
De offset telt veelvouden van 8 bytes.
Op deze manier kan een totaal pakket verstuurd worden in 256 stukken van 8 bytes, 2048 bytes totaal.

Als zowel de verzendende kant als de ontvangende kant een lijstje hebben met wat de verschillende channel nummers betekenen kan een compleet ethernet pakket weer bij de ontvanger worden samengesteld. Daarom sturen de verschillende stations regelmatig een update op channel 127 (wat dus ook niet voor ander gebruik beschikbaar is) met daarin de ethernet header die bij dat channel hoort.
Voor erg grote pakketten of voor incidentele pakketten heeft het claimen van een channel weinig zin. Daarvoor kan een station ook een channel claimen waar geen header aan hangt. De pakketten op dit algemene channel zullen dus nog steed de volledige ethernet header moeten bevatten.

Elk pakket bestaat dus uit blokjes data van 80 bits (16 bit header + 64 bit data).
Ik ben wat aan het experimenteren met LDPC (low density parity check) codes en na toevoeging van de fec bits worden dit 100 bits om te verzenden.
Deze 100 bits zend ik nu uit met MLT-3 encoding op 9k6. Dit levert een relatief laagfrequent signaal op. De bedoeling is om het uit te zenden met 'gewoon' FM, andere modes zoals GMSK zijn ook interessant, maar daarvoor moet ik nu iets te veel hardware bouwen.

Aan de ontvangende kant is het vrij makkelijk om op bit niveau te synchroniseren. Op pakket niveau doe ik dit door de LDPC decoder te laten zoeken naar een geldig patroon. Dit lijkt redelijk goed te lukken en waarschijnlijk zijn hierdoor geen extra synchronisatie vlaggen of iets dergelijks nodig.

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#5 Bericht door pe1rxq »

De eerste tests met het modem werken.
Tot nu toe heb ik voornamelijk met een loopback getest. Ik verwacht dat bij echte transceivers de demodulatie nog wel wat problemen zal ondervinden van het hoogdoorlaat filter. In die hoek valt nog wel wat te verbeteren.

De code staat hier: http://video.vreeken.net/~pe1rxq/ffsk.git/

Gebruikersavatar
pa3dsc
Berichten: 1166
Lid geworden op: 21 dec 2005, 20:02
Roepletters: pa3dsc
Locatie: Nuenen
Contacteer:

Re: DML Decentralized Media Linking

#6 Bericht door pa3dsc »

DML werkt ook met audio streams.
Hoe verhoudt zich DML tot het Brandmeister netwerk?

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#7 Bericht door pe1rxq »

Een groot verschil is dat Brandmeister een DMR netwerk is. Je kunt koppelen met andere soorten netwerken, maar alleen als het andere netwerk in het DMR plaatje past.

Maar het grootste verschil is wie er op mag. Er is eigenlijk (net als bijvoorbeeld met echolink) maar 1 niveau binnen het netwerk: je mag er op of je mag er niet op. Het idee achter DML is nu juist dat iedereen er op mag, en dat met behulp van certificaten bepaald wordt wie elkaars data accepteerd en doorgeeft.
Zo zou er ook rustig audio afkomstig van 27mc of PMR over het netwerk mogen gaan. Bij een repeater kies je welke categorieen van licenties je toelaat op de band.
Op deze manier zorg je er ook voor dat er niemand het netwerk kan kapen. Als je het niet met elkaar eens bent zet je gewoon je eigen certificate authority op.

Overigens is het niet gelimiteerd to audio streams, alles wat streambaar is (ook video) kan gebruikt worden. Ik heb al eens eens als test een video gestreamd in ogg theora formaat.

Gebruikersavatar
PA1WES
Berichten: 198
Lid geworden op: 02 mar 2014, 18:11
Roepletters: PD1WES

Re: DML Decentralized Media Linking

#8 Bericht door PA1WES »

Dit klinkt een beetje zoals het bitcoin netwerk opgezet is :)

Indien iedereen een CA op kan zetten, is het misschien mogelijk deze cryptografisch te laten verrifieren door meerdere reeds bestaande CA nodes. Ook weer analoog aan de bitchain opzet, die daarbij overigen ook gebruik maakt van een decentrale database.

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#9 Bericht door pe1rxq »

CA's kunnen elkaar erkennen door middel van cross signing.
Maar er is wel een verschil: Voor bijvoorbeeld SSL is het van belang dat je zeker weet dat je met de juiste persoon een verbinding hebt. Dat gebeurt dan op basis van de domein naam. Je browser probeert een chain van certificaten te vinden die leiden naar een door de browser erkend root certificaat. Door cross signing zijn er meerder chains mogelijk waardoor de kans groot wordt een geldige te vinden.

Maar voor DML wil ik nog wat anders doen: het classificeren van de streams.
Stel:
- we hebben een CA 'NL-f' die certificaten uitgeeft aan iederen die kan aantonen dat hij een nederlandse full licentie heeft.
- we hebben een CA 'NL-all' die certificaten uitgeeft aan iedereen die kan aantonen dat hij een nederlandse licentie heeft.
- we hebben een CA 'NL-f-eigenwijs' die hetzelfde doet als NL-f, maar dan beter.

NL-all zou een NL-f certificaat kunnen signen wat aangeeft dat alles dat door NL-f wordt erkend ook door NL-all wordt erkend.
Maar omgekeerd mag je dit niet doen, want dan zou NL-f bijvoorbeeld ook door NL-all erkende novice licenties erkennen.

NL-f en NL-f-eigenwijs zouden elkaar kunnen erkennen en cross signen, ze hebben immers dezelfde voorwaarden. Hierdoor zouden ze ook elkaars backup kunnen zijn.
Maar als ze het niet eens kunnen worden is het ook prima, de twee kunnen prima naast elkaar bestaan en wie wil kan zelf hun root certificaat opnemen in hun lijst en zo bepalen wie de ether in mag.

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#10 Bericht door pe1rxq »

Ik heb een nieuwe client toegevoegd: dml_httpd.
Het is een simpele webserver welke een DML connectie over een websocket aanbied.
Ik heb ook een eerste stukje javascript geschreven wat ongeveer hetzelfde doet als dml_list: het vraagt route updates van de server en geeft deze status weer in de web pagina.

Een testje draait hier: http://video.vreeken.net:8800/

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#11 Bericht door pe1rxq »

Kleine update:

De javascript code kan nu ook een connectie op zetten. Als je browser het ondersteund kan het zelfs afgespeeld worden.
Om dit mogelijk te maken kan het dml_streamer nu niet alleen ogg, maar ook het webm formaat aan. Een recente firefox is dan in staat om een video stream live af te spelen.
De signatures worden nog niet gecontroleerd, dat zou in princiepe wel moeten kunnen maar heb ik nog geen tijd voor gehad.

Wat betreft ffsk is er ook vooruitgang: Uitzendingen met een Bosch KF-452 worden successvol ontvangen met een Yeasu FT-817.
Decoderen gaat ook goed, alleen valt het zo nu en dan weg... nog wat te debuggen dus.
Binnenkort nog de code voor het bedienen van de PTT testen en tweeweg communicatie zou moeten werken.

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#12 Bericht door pe1rxq »

Ik ben maar eens begonnen om wat dingen te documenteren.

http://video.vreeken.net/~dml/

Gebruikersavatar
PE1ICQ
Berichten: 110
Lid geworden op: 23 aug 2005, 09:54
Locatie: Veldhoven
Contacteer:

Re: DML Decentralized Media Linking

#13 Bericht door PE1ICQ »

Goed bezig Jeroen!

Hoe ziet de HW interface eruit? Ik ben benieuwd hoe je de 3 niveaus van de MLT-3 encoder moduleert.
73 PE1ICQ
//Arno Verhoeven

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#14 Bericht door pe1rxq »

Aangezien alles nog redelijk laagfrequent is gebruik ik de soundcard als interface.
Momenteel dus alles wat ALSA ondersteund, maar misschien stap ik over op portaudio... moet dat nog eens goed bekijken.
Voor het bedienen van de PTT gebruik ik hamlib. In mijn geval laat ik hamlib de RTS lijn van een seriele poort bedienen.
(De meeste USB serieel kabeltjes kunnen dat ook, maar niet allemaal....)
Een MLT-3 stap komt er als een halve (top naar top) raised cosine uit. Dit geeft een veel netter spectrum dan een lompe blokgolf.

Afgelopen week heb ik ook een 'nieuw' modem toegevoegd: freedv_eth
Dit is een schil om de freedv library heen. Het accepteerd codec2 ethernet pakketten in de geselecteerde freedv mode (700, 700B of 1600) en moduleert ze.
Er is een kleine patch nodig in de freedv_api (onderdeel van de codec2 library) om rechtstreeks codec2 frames te kunnen gebruiken in plaats van audio.
Maar hiermee is het in princiepe mogelijk een freedv repeater of hotspot op te zetten en deze rechtstreeks aan het DML netwerk te koppelen zonder enig verlies.
Omdat deze code maar een mode tegelijk aankan heb ik dml_trx uitgebreid met de mogelijkheid om de verschillende codec2 bitrates te transcoden. Hiermee kunnen nodes op VHF/UHF makkelijker met HF gekoppeld worden.

pe1rxq
Berichten: 358
Lid geworden op: 01 mei 2005, 20:54

Re: DML Decentralized Media Linking

#15 Bericht door pe1rxq »

Sinds vandaag zitten mijn wijzigingen in codec2-dev. Een losse patch is dus niet meer nodig.

Ik heb ook de analoge audio code uit dml_trx gehaald. Dit is verplaatst naar een los projectje: analog_trx.
Deze brengt ook een tap device in de lucht waardoor freedv, ffsk en analoge modes hetzelfde werken.
Analog_trx heeft ook wat nieuwe code om DTMF te decoderen. (geleend van asterisk)

Wat betreft FFSK ook wat nieuws: dat staat even op een laag pitje. codec2-dev bevat namelijk sinds een tijdje ook een tweetal FSK modes op 2400 bps.
Met wat kleine toevoegingen kan ik hier ook al veel mee wat ik van plan was. De noodzaak voor een nieuwe mode is dus even weg en ik kan me dan focusen op het DML netwerk.

Plaats reactie