okleine / nCoAP

Java implementation of the CoAP protocol using netty
BSD 3-Clause "New" or "Revised" License
179 stars 57 forks source link

Netty 4.0 #32

Open earthling opened 8 years ago

earthling commented 8 years ago

Hello, first let me say thank you for the nCoAP library!

One of the projects I work on involves a CoAP proxy. The proxy uses netty 4. I have done some work already to port nCoAP to netty 4: https://github.com/earthling/nCoAP/tree/netty-4.0. All of the unit tests pass, but I am not quite sure it is ready for a pull request. I would like to start the conversation though. I'm also not sure how you would want to handle it, as it breaks compatibility with netty-3 users.

I'm also curious about this CoAP Endpoint Identification proposal you drafted: https://tools.ietf.org/html/draft-kleine-core-coap-endpoint-id-01​. CoAP proxies face a similar problem - specifically when it is necessary to keep track of authenticated clients (i.e., sessions). Are you aware of any other CoAP tools that support this proposal? do you think it likely to be accepted into the CoAP canon?

Thanks again, William

okleine commented 8 years ago

Hello William,

thank you for your effort! Moving to Netty 4 or even 5 was one of the things I've been thinking of for a long time. However, for several reasons I didn't have the time, yet. I don't think that backwards compatibilty to Netty 3 is a blocker since most of the Netty internals do not touch the surface of nCoAP (except for ChannelBuffers for message content). I'll have a deeper look at your changes as soon as possibe.

Regarding the enpoint identification proposal I'm not so confident to get sufficient acceptence within the IETF. When using coaps with client and server certificates there is no need for the extension because those certificates contain stable identifiers. But I know of at least one other (closed source) implementation that supports the extension. The company told me, that they use it within their enterprise network to identify moving CoAP nodes to avoid the need for coaps and certificates.

Best, Oliver

earthling commented 7 years ago

Hello Oliver, I had some time recently to work further with nCoAP. As you may or may not know, netty 4 provides a sophisticated buffer pooling mechanism. It requires users to keep track of reference counts for buffers. It can be difficult to get right the first time. These commits mostly correct reference counting errors in my first pull request. There are also some improvements that make use of other netty features.