Wat is DNP3?
DNP3 (Distributed Network Protocol versie 3) is een open communicatieprotocol waarmee een centraal SCADA-systeem gegevens uitwisselt met RTU’s en IED’s in het veld, ontworpen voor betrouwbare telemetrie over trage of storingsgevoelige verbindingen. Het protocol wordt vooral gebruikt in de energie-, water- en nutssector en is sinds 2010 vastgelegd als IEEE-standaard 1815. DNP3 combineert gewone polling met report by exception: veldstations bufferen gebeurtenissen met tijdstempel en sturen alleen wat er veranderd is. Daarmee is het een van de belangrijkste protocollen in industriële automatisering voor geografisch verspreide installaties.
🧠 Waarom is DNP3 ontwikkeld?
DNP3 werd in 1993 ontwikkeld door Westronic (later GE-Harris Canada) in Calgary. Het bedrijf baseerde het protocol op de toen nog onvoltooide IEC 60870-5-specificaties en stemde het af op Noord-Amerikaanse eisen. Dezelfde IEC-reeks leidde later tot IEC 60870-5-104, de Europese tegenhanger. Kort na de introductie werd het eigendom overgedragen aan de onafhankelijke DNP Users Group, die het protocol nog steeds beheert.
DNP3 is ontworpen voor omgevingen waar:
- Verbindingen traag of onbetrouwbaar zijn - huurlijnen, radio en inbelverbindingen naar afgelegen stations
- Volgorde en tijd ertoe doen - bij een netstoring wil de operator weten welke schakelaar het eerst uitviel, tot op de milliseconde
- Geen data verloren mag gaan - gebeurtenissen blijven in de buffer van het veldstation tot het SCADA-systeem ze bevestigt
- Bediening op afstand veilig moet verlopen - schakelopdrachten worden in twee stappen gecontroleerd voordat ze worden uitgevoerd
- Beschikbaarheid essentieel is - veel implementaties ondersteunen redundante communicatiepaden en een tweede master
Het oorspronkelijke DNP3 had geen enkele beveiliging. Dat was destijds gebruikelijk: de verbindingen waren gesloten en serieel. Beveiliging is later toegevoegd en is nog steeds lang niet overal ingeschakeld.
🔧 Hoe werkt DNP3?
DNP3 volgt de Enhanced Performance Architecture uit IEC 60870-5: een compact model met drie lagen in plaats van de zeven van het OSI-model, aangevuld met een eenvoudige transportfunctie.
| Laag | Functie | Kenmerken |
|---|---|---|
| Datalinklaag | Framing, adressering, foutdetectie | Frame van maximaal 292 bytes met 250 bytes data, een CRC na elke 16 bytes, 16-bits bron- en bestemmingsadres |
| Transportfunctie | Opknippen en samenvoegen | Verdeelt grote berichten over meerdere linkframes |
| Applicatielaag | Objecten en functiecodes | Lezen, schrijven, besturen, tijdsynchronisatie en ongevraagde meldingen |
Het centrale systeem heet de master, het veldstation de outstation. Data is georganiseerd in objectgroepen zoals binaire ingangen, tellers, analoge ingangen en analoge uitgangen. Elke waarde kan een tijdstempel, een kwaliteitsvlag en een eventklasse meekrijgen. Niet elk apparaat hoeft alles te ondersteunen: de DNP Users Group definieert subsetniveaus 1 tot en met 4, van eenvoudige veldapparaten tot volledige masters. Het device profile van een leverancier beschrijft welke objecten en functiecodes een apparaat werkelijk kent, en de gebruikersgroep biedt certificeringstests voor IED’s.
Klassen en report by exception
- Klasse 0 - de actuele (statische) waarde van alle punten
- Klasse 1, 2 en 3 - buffers voor gebeurtenissen, meestal met aflopende prioriteit
- Integrity poll - bij het opstarten leest de master klasse 1, 2, 3 en 0 in één keer uit, zodat hij een compleet en actueel beeld heeft
- Event polls - daarna vraagt de master alleen nog de eventklassen op, en komen alleen wijzigingen mee
- Unsolicited responses - een outstation mag een gebeurtenis ook zelf melden (functiecode 130), zonder te wachten op een poll
Dit maakt DNP3 zuinig op bandbreedte. Een gemaal dat uren niets verandert, stuurt ook uren vrijwel niets.
Bediening met select-before-operate
Voor schakelopdrachten kent DNP3 SELECT (functiecode 3) gevolgd door OPERATE (4). Het veldstation bevestigt eerst welk punt geselecteerd is en voert de opdracht pas uit als een identiek OPERATE-bericht volgt. DIRECT OPERATE (5) slaat die controle over en is sneller, maar minder robuust tegen verminkte berichten. Tijdsynchronisatie loopt via aparte tijdobjecten. Bij IP-netwerken wordt daarnaast vaak NTP gebruikt.
Serieel en over IP
DNP3 begon op RS-232 en RS-485 en radioverbindingen. Tegenwoordig draait het vooral over TCP of UDP op poort 20000, die bij IANA voor DNP3 geregistreerd is. Het volledige linkframe wordt daarbij ongewijzigd in het IP-pakket meegestuurd.
🔄 Wat is het verschil tussen DNP3, Modbus en IEC 60870-5-104?
| Aspect | DNP3 | Modbus | IEC 60870-5-104 |
|---|---|---|---|
| Oorsprong | 1993, Noord-Amerika | 1979, Modicon | 2000, IEC |
| Standaard | IEEE 1815 | Modbus Organization | IEC 60870-5-104 |
| Ontworpen voor | Telemetrie in nutsbedrijven en kritieke infrastructuur | Algemene machine- en procescommunicatie | Telecontrol in elektriciteitsnetten |
| Communicatiemodel | Polling plus report by exception en ongevraagde meldingen | Puur master/slave-polling | Spontane meldingen en vraag-antwoord over TCP |
| Tijdstempels | Ja, per gebeurtenis | Nee | Ja, per gebeurtenis |
| Eventbuffering | Ja, in drie klassen | Nee | Ja |
| Beveiliging | Secure Authentication, TLS | Klassiek geen, nu Modbus/TCP Security met TLS | TLS en authenticatie via IEC 62351 |
| Gebruikt in | Noord-Amerika, Australië, Latijns-Amerika | Wereldwijd | Europa, Midden-Oosten, Azië |
Voor nieuwe schakelstations in Europa is IEC 61850 de standaard. Met de norm IEEE 1815.1-2015 kan een gateway DNP3 en IEC 61850 op elkaar afbeelden. Zo kan een DNP3-master toch een IEC 61850-station uitlezen.
🏭 Waar wordt DNP3 gebruikt?
- Elektriciteit - communicatie tussen controlekamers, schakelstations, IED’s en distributieautomatisering
- Drinkwater en afvalwater - niveaus, debieten en pompbesturing op afstand, vaak via radio of 4G
- Olie en gas - Monitoring van pijpleidingen, kleppen, tanks en flowmeters
- Transport - bruggen, tunnels en spoorweginfrastructuur
In Nederland en de rest van Europa gebruiken netbeheerders vooral IEC 60870-5-104 en IEC 61850. DNP3 kom je hier tegen bij RTU’s en besturingen van Noord-Amerikaanse en Australische leveranciers, bijvoorbeeld in water-, energie- en olie- en gasinstallaties. Veel SCADA-pakketten ondersteunen DNP3 standaard naast andere protocollen.
🔐 Hoe beveilig je DNP3?
Secure Authentication
DNP3 Secure Authentication (SA) controleert of een bericht echt van een bevoegde partij komt en onderweg niet is gewijzigd. Versie 5 (SAv5) is opgenomen in IEEE 1815-2012 en gebaseerd op IEC/TS 62351-5.
- Challenge-response - bij kritieke opdrachten daagt het ontvangende station de afzender uit om een HMAC (met SHA-1 of bij voorkeur SHA-256) over het bericht te berekenen
- Aggressive mode - de HMAC gaat direct mee in het bericht. Dit is sneller, maar minder streng
- Sessiesleutels - worden periodiek ververst. Sinds 2012 kunnen updatesleutels op afstand worden gewisseld, ook met PKI
- Bescherming tegen spoofing, replay attacks en ongeautoriseerde opdrachten
Secure Authentication versleutelt niets. Wie vertrouwelijkheid nodig heeft, gebruikt TLS volgens IEC 62351-3 of een VPN. IEC 62351-5:2023 voegt geauthenticeerde encryptie op applicatieniveau toe voor de IEC 60870-5-familie. Een opvolger, SAv6, is nog in ontwikkeling.
Kwetsbaarheden in implementaties
In 2013 en 2014 onderzochten Adam Crain en Chris Sistrunk DNP3-implementaties met fuzzing (Project Robus). Ze vonden tientallen fouten in masters en outstations van diverse leveranciers. Ook via een seriële verbinding kon een master worden platgelegd. Het probleem zat niet in het protocol zelf, maar in slordige invoervalidatie. Dat maakt patchbeleid en leverancierseisen volgens IEC 62443 even belangrijk als het protocol.
Praktische maatregelen
- Inventariseer alle DNP3-verbindingen, adressen en functiecodes in je asset inventory, ook seriële en radiolinks.
- Segmenteer het netwerk met netwerksegmentatie en een industriële firewall die alleen poort 20000 tussen bekende masters en outstations toestaat.
- Filter op functiecode met protocol filtering: blokkeer bijvoorbeeld koude herstart, schrijfopdrachten en firmware-uploads vanaf onbekende stations.
- Monitor passief met een IDS of passieve monitoring. Zeek, Suricata, Snort en Wireshark kunnen DNP3 ontleden.
- Schakel Secure Authentication in waar apparatuur het ondersteunt, en gebruik TLS of een VPN over openbare netwerken.
- Plan vervanging van legacy RTU’s die geen authenticatie ondersteunen, en leg authenticatie-eisen vast bij inkoop.
Voor drinkwaterbedrijven, waterschappen en energiebedrijven vallen DNP3-netwerken onder de zorgplicht van de Cyberbeveiligingswet, de Nederlandse invulling van NIS2, die sinds 15 augustus 2026 van kracht is. Zie ook OT-security in de watersector.
❓ Veelgestelde vragen
Waar staat DNP3 voor?
DNP3 staat voor Distributed Network Protocol versie 3. Het is een open protocol voor telemetrie en bediening op afstand tussen een SCADA-master en veldstations zoals RTU’s en IED’s. De DNP Users Group beheert het, en sinds 2010 is het ook de IEEE-standaard 1815.
Welke poort gebruikt DNP3?
DNP3 over IP gebruikt standaard TCP- of UDP-poort 20000, die bij IANA voor DNP3 is geregistreerd. Firewalls in OT-netwerken staan deze poort idealiter alleen toe tussen bekende masters en outstations. Seriële DNP3-verbindingen over RS-232 of RS-485 gebruiken uiteraard geen poortnummer.
Is DNP3 versleuteld?
Standaard DNP3 is niet versleuteld: berichten gaan in leesbare vorm over de lijn. DNP3 Secure Authentication voegt alleen authenticatie en integriteitscontrole toe, geen versleuteling. Voor vertrouwelijkheid moet DNP3 worden getunneld via TLS volgens IEC 62351-3 of een VPN.
Wat is een outstation in DNP3?
Een outstation is in DNP3 het veldstation dat meetwaarden en gebeurtenissen levert en opdrachten uitvoert, meestal een RTU, IED of PLC. De master is het centrale SCADA-systeem dat de outstation pollt. Eén outstation kan met meerdere masters communiceren.
Wordt DNP3 in Nederland gebruikt?
DNP3 wordt in Nederland minder gebruikt dan in Noord-Amerika, omdat Nederlandse netbeheerders vooral IEC 60870-5-104 en IEC 61850 toepassen. DNP3 komt hier wel voor in water- en energie-installaties met apparatuur van Noord-Amerikaanse of Australische leveranciers. Zulke DNP3-verbindingen vallen onder dezelfde beveiligingseisen van de Cyberbeveiligingswet als andere OT-protocollen.
Wat is het verschil tussen DNP3 en Modbus?
DNP3 ondersteunt tijdstempels, eventbuffering, report by exception en select-before-operate, en Modbus niet. Modbus is eenvoudiger en leest alleen registers op verzoek van een master. Daarom is DNP3 geschikter voor telemetrie over grote afstanden, en Modbus voor communicatie binnen één installatie.
📌 Samengevat
DNP3 is het open telemetrieprotocol (IEEE 1815) waarmee SCADA-systemen betrouwbaar communiceren met RTU’s en IED’s over trage of storingsgevoelige verbindingen, met tijdstempels, eventbuffering en gecontroleerde bediening. Het protocol is dominant in Noord-Amerikaanse nutsbedrijven en komt in Europa vooral voor naast IEC 60870-5-104 en IEC 61850. Omdat DNP3 standaard onversleuteld is, horen segmentatie, functiecodefiltering, monitoring en Secure Authentication of TLS bij elke implementatie.
