Zendamateur.COM

24 uur per dag QRV
Het is nu 26 jun 2017, 04:42

Alle tijden zijn GMT + 1 uur




Plaats een nieuw onderwerp Antwoord op onderwerp  [ 45 berichten ]  Ga naar pagina 1, 2, 3  Volgende
Auteur Bericht
BerichtGeplaatst: 29 dec 2015, 00:00 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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.


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 29 dec 2015, 13:08 
Offline
Moderator
Avatar gebruiker

Geregistreerd: 17 maart 2008, 15:05
Berichten: 2378
Woonplaats: Sintjohannesga (JO22ww)
Klinkt interessant! Zou het erg leuk vinden als je ons hier op de hoogte zou houden van de voortgang.

_________________
www.PC5E.nl, Robert Elsinga, navigatie en communicatie enthousiasteling, zendamateur, scannerluisteraar, scout leiding, IT architect
Icom IC-7000, X50N (14m asl), MFJ926B+ZS6BKW (inverted V, 12m asl), Kenwood TH-F7E, Polmar DB-50M, Diamond SG7500 (2m ASL ;) ), Hytera PD-785G, Tytera MD380, 18x Baofeng BF888S, Uniden UBC3500XLT, Garmin NuviCam, Garmin Montana 650t
Op mijn site o.a. Examenuitwerking N/F, EMC apparatuur overzicht, Scannerfrequenties NL e.o.


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 03 jan 2016, 15:53 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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.


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 03 jan 2016, 16:52 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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.


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 09 jan 2016, 17:59 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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/


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 10 jan 2016, 06:58 
Offline

Geregistreerd: 21 dec 2005, 20:02
Berichten: 869
Woonplaats: Nuenen
DML werkt ook met audio streams.
Hoe verhoudt zich DML tot het Brandmeister netwerk?


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 10 jan 2016, 18:05 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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.


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 12 jan 2016, 11:45 
Offline
Avatar gebruiker

Geregistreerd: 02 maart 2014, 18:11
Berichten: 137
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.


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 12 jan 2016, 13:11 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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.


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 13 jan 2016, 15:13 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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/


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 26 jan 2016, 19:38 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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.


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 03 feb 2016, 19:38 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
Ik ben maar eens begonnen om wat dingen te documenteren.

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


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 06 feb 2016, 21:34 
Offline
Avatar gebruiker

Geregistreerd: 23 aug 2005, 09:54
Berichten: 109
Woonplaats: Veldhoven
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


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 09 feb 2016, 16:26 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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.


Omhoog
 Profiel  
Antwoord met een citaat  
BerichtGeplaatst: 25 feb 2016, 23:34 
Offline

Geregistreerd: 01 mei 2005, 20:54
Berichten: 107
Woonplaats: Valkenswaard
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.


Omhoog
 Profiel  
Antwoord met een citaat  
Geef de vorige berichten weer:  Sorteer op  
Plaats een nieuw onderwerp Antwoord op onderwerp  [ 45 berichten ]  Ga naar pagina 1, 2, 3  Volgende

Alle tijden zijn GMT + 1 uur


Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 3 gasten


Je mag geen nieuwe onderwerpen in dit forum plaatsen
Je mag niet antwoorden op een onderwerp in dit forum
Je mag je berichten in dit forum niet wijzigen
Je mag je berichten niet uit dit forum verwijderen
Je mag geen bijlagen toevoegen in dit forum

Zoek naar:
Ga naar:  
Powered by phpBB® Forum Software © phpBB Group
phpBB.nl Vertaling