plgd-dev / go-coap

Implementation of CoAP Server & Client in Go
https://coap.technology
Apache License 2.0
436 stars 115 forks source link

Support serializing and deserializing a UDP DTLS connection #472

Open oursland opened 11 months ago

oursland commented 11 months ago

DTLS connections can have their states marshalled for storage and unmarshalled to restore the connection. Supporting this would permit a user to maintain long-term CoAP connections without the need to for renegotiating the DTLS handshakes, improving performance particularly over unreliable and high latency networks such as LPWAN and cellular.

The underlying functionality to support this provided by the following functions from pion/dtls:

hasheddan commented 11 months ago

@oursland thanks for opening! This is on my radar as well 👍🏻 I recently added Connection ID support in pion/dtls and have a branch that should be ready by the end of this week to support in go-coap (#467). Are you planning to work on resuming connections or are you looking for someone else to pick it up? Happy to collaborate either way :)

oursland commented 11 months ago

I have added it as a task to work on if it isn't completed by the time I would like to use it. I'm still in the early stages of a project and so optimizing for infrequent connections, battery life, connection sensitivity, etc are still further down the road for me.