Skip to content

Thus0/test-coap-dtls

Repository files navigation

test LwM2M / COAP / DTLS / UDP / IP

  • author: Thus0
  • last modified: 2022-01-30 21:16

architecture

COAPS sensor  --- [operator_net] --- router-coap (NAT) --- [inter_net] --- COAPS server
                  192.168.12.x     .254             .254   192.168.11.x 

DTLS libraries

COAPS frameworks

  • aiocoap (python)
    • RFC7252 (CoAP): Supported for clients and servers. Multicast is supported on the server side, and partially for clients. DTLS is supported but experimental, and lacking some security properties. No caching is done inside the library.
    • RFC7641 (Observe): Basic support for clients and servers. Reordering, re-registration, and active cancellation are missing.
    • RFC7959 (Blockwise): Supported both for atomic and random access.
    • RFC7967 (No-Response): Supported.
    • RFC8132 (PATCH/FETCH): Types and codes known, FETCH observation supported.
    • RFC8323 (TCP, WebSockets): Supports CoAP over TCP, TLS, and WebSockets (both over HTTP and HTTPS). The TLS parts are server-certificate only; preshared, raw public keys and client certificates are not supported yet.
    • RFC8613 (OSCORE): Full support client-side; protected servers can be implemented based on it but are not automatic yet.
    • draft-ietf-core-resource-directory: A standalone resource directory server is provided along with a library function to register at one. They lack support for groups and security considerations, and are generally rather simplistic.
    • draft-ietf-core-oscore-groupcomm-11 (Group OSCORE): Supported for both group and pairwise mode in groups that are fully known. (The lack of an implemented joining or persistence mechanism makes this impractical for anything but experimentation.)
  • Eclipse Californium (java)
  • coap-cli.js (javascript)
  • libcoap (C)
    • RFC7252: The Constrained Application Protocol (CoAP)
    • RFC7641: Observing Resources in the Constrained Application Protocol (CoAP)
    • RFC7959: Block-Wise Transfers in the Constrained Application Protocol (CoAP)
    • RFC7967: Constrained Application Protocol (CoAP) Option for No Server Response
    • RFC8132: PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)
    • RFC8323: CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets [No WebSockets support]
    • RFC8768: Constrained Application Protocol (CoAP) Hop-Limit Option
    • The library is designed to support transport layer security utilizing frameworks such as GnuTLS, OpenSSL, Mbed TLS, or tinydtls.
      • OpenSSL (Minimum version 1.1.0) : DTLS-CERT, DTLS-PSK and PKCS11
      • GnuTLS (Minimum version 3.3.0) : DTLS-CERT, DTLS-PSK, DTLS-RPK (3.6.6+) and PKCS11
      • Mbed TLS (Minimum version 2.7.10) : DTLS-CERT and DTLS-PSK
      • TinyDTLS : DTLS-PSK and DTLS-RPK (DTLS Only)

COAPS proxies and gateways

  • emqx-coap (Erlang)
  • FreeCoAP (C)
    • HTTP/CoAP proxy with DTLS support
    • DTLS-CERT for CoAP implemented using GnuTLS with X.509 certificates (RFC 7252)
    • DTLS-RPK for CoAP implemented using tinydtls with raw public key (RFC 7252)

LWM2M frameworks

  • AVSystem Anjay (C)
    • LwM2M Security modes:
      • DTLS-CERT (if supported by backend TLS library)
      • DTLS-PSK (if supported by backend TLS library)
      • NoSec mode
    • Supported TLS backends:
      • OpenSSL (Minimum 1.1.+)
      • Mbed TLS (Minimum 2.0+)
      • tinydtls (Minimum 0.9+)
  • Eclipse Wakaama (C)

Serveur LwM2M

Serveur/Broker COAP