DML Decentralized Media Linking
Geplaatst: 29 dec 2015, 00:00
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.
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.