Covertness / coap-rs

A Constrained Application Protocol(CoAP) library implemented in Rust.
MIT License
209 stars 49 forks source link

Block and Link Format support #18

Open bsmelo opened 6 years ago

bsmelo commented 6 years ago

Hello,

I know this library doesn't support Observe RFC yet. Does it support Blockwise Transfer (RFC7959) and Link Formats (RFC6690)? Besides those, which other options are NOT supported?

Thanks!

Covertness commented 6 years ago

I will add some features in the next few weeks. Can you tell me what would you do with Blockwise Transfer and Link Formats ? This lib currently only support the basic feature of CoAP. The options of CoAP will supported in the feature.

bsmelo commented 6 years ago

Hi, Thanks for the response! I wouldn't do anything specific, actually... I'm just collecting different CoAP implementations and comparing them, and the implementation status of these related RFCs is one of the dimensions compared. I actually use sample applications developed for each of those implementations, in a research project in which I'm testing the robustness of those implementations through fuzzing. It is based on that comparison that I choose the implementations to be tested, and I was thinking about adding this one to my list.

Covertness commented 6 years ago

CoAP is a new protocol. Many libraries are still under the process. Can you talk about which one implement the most of features among your tested libraries ?

bsmelo commented 6 years ago

Among the ones I've selected thus far, I'd say Californium (java), libcoap (c), libnyoci (c), txThings (python), CoAPthon (python), aiocoap (python), jcoap (java) and canopus (go) are fairly complete. Californium and libcoap are probably the most mature ones, I would guess.

I'm still in the process of selecting other candidates, though. If you are interested, I've also found this paper [1] from 2017 which does a feature and performance comparison between some (a few) implementations.

[1] https://www.sciencedirect.com/science/article/pii/S1877050917309870?via%3Dihub

Covertness commented 6 years ago

Thank you for your information.

ea2973929 commented 5 years ago

Maybe split this in two? I could use Block1 transfers for updating device firmwares, but have no need for the link format (atm). I'm sure other people have other priorities. Anyway, they are two different parts of the spec. and are separate features.

Covertness commented 5 years ago

@ea2973929 Of course. These two features have no relationship. I will do it later and any pr will be appreciate.

Covertness commented 2 years ago

Block1/2 is supported in this repo.