Quality Of Service

Ondersteund door

 

TsgcWSPServer_sgc

TsgcWSPClient_sgc

TsgcWSPClient_MQTT

  Java script

 

 

SGC Default Protocol en MQTT implementeren QoS (Quality of Service) voor berichtbezorging. Er zijn 3 verschillende typen:

 

Level 0: "Ten hoogste één keer", waarbij berichten worden afgeleverd op basis van de beste inspanning van het onderliggende TCP/IP-netwerk. Berichtverlies of -duplicatie kan voorkomen. Dit niveau kan bijvoorbeeld worden gebruikt bij omgevingssensorgegevens waarbij het niet uitmaakt als een individuele meting verloren gaat, omdat de volgende binnenkort wordt gepubliceerd.

 

Niveau 1: "Ten minste één keer", waarbij berichten gegarandeerd aankomen maar duplicaten kunnen optreden.

 

Niveau 2: "Precies één keer", waarbij berichten gegarandeerd precies één keer aankomen. Dit niveau kan bijvoorbeeld worden gebruikt bij factureringssystemen waar dubbele of verloren berichten tot onjuiste kosten kunnen leiden.

 

 

Niveau 0

Het bericht wordt bezorgd op basis van de best efforts van het onderliggende TCP/IP-netwerk. Er wordt geen antwoord verwacht en er zijn geen herproefsemantiek gedefinieerd in het protocol. Het bericht arriveert op de server eenmaal of helemaal niet.

 

De onderstaande tabel toont de protocoltroom voor QoS-niveau 0.

 

Client Bericht en richting Server
QoS = 0 PUBLISH
---------->
Actie: Publiceer een bericht naar abonnees

Niveau 1

De ontvangst van een bericht door de server wordt bevestigd door een ACKNOWLEDGEMENT-bericht. Als er een geïdentificeerd falen is van de communicatieverbinding of het verzendende apparaat, of als het bevestigingsbericht niet wordt ontvangen na een bepaalde periode, verzendt de afzender het bericht opnieuw. Het bericht komt ten minste één keer aan bij de server.

 

Een bericht met QoS-niveau 1 heeft een bericht-ID in het bericht.

 

De onderstaande tabel toont de QoS niveau 1-protocolstroom.

 

Client Bericht en richting Server
QoS = 1
Message ID = x

Actie: Bericht opslaan

PUBLISH
---------->
Acties:
  • Bericht opslaan

  • Een bericht publiceren naar abonnees
  • Bericht verwijderen

Actie: Bericht verwijderen BEVESTIGING
<----------
 

 

Als de client geen ACKNOWLEDGMENT-bericht ontvangt (binnen een tijdsperiode gedefinieerd in de applicatie, of als er een storing wordt gedetecteerd en de communicatiesessie opnieuw wordt gestart), mag de client het PUBLISH-bericht opnieuw verzenden.

 

Level 2

Aanvullende protocolstromen boven QoS-niveau 1 zorgen ervoor dat dubbele berichten niet aan de ontvangende applicatie worden afgeleverd. Dit is het hoogste leveringsniveau, te gebruiken wanneer dubbele berichten niet acceptabel zijn. Er is een toename in netwerkverkeer, maar dat is doorgaans acceptabel vanwege het belang van de berichtinhoud.

 

Een bericht met QoS-niveau 2 heeft een bericht-ID in het bericht.

 

De onderstaande tabel toont de QoS-niveau 2-protocolstroom. Er zijn twee semantieken beschikbaar voor hoe een PUBLISH-stroom moet worden afgehandeld door de ontvanger.

 

Client Bericht en richting Server
QoS = 2
Bericht-ID = x

Actie: Bericht opslaan

PUBLISH
---------->
Actie: Bericht opslaan
  PUBREC
<----------
Bericht-ID = x
Bericht-ID = x PUBREL
---------->
Acties:
  • Een bericht publiceren naar abonnees
  • Bericht verwijderen
Actie: Bericht verwijderen BEVESTIGING
<----------
Bericht-ID = x

 

Als een fout wordt gedetecteerd, of na een gedefinieerde tijdsperiode, wordt de protocolvolgorde opnieuw geprobeerd vanaf het laatste niet-bevestigde protocolbericht. De aanvullende protocolstromen zorgen ervoor dat het bericht precies één keer aan abonnees wordt bezorgd.